首页 > 解决方案 > 如何在http post请求的每一行中添加一个标头

问题描述

我正在发出一个 http post 请求,我必须在标题中传递用户名和密码。这就是我的做法:

 client.DefaultRequestHeaders.Accept.Clear(); 

 string jsonObjectA = DataDto.ToJSONString();
 HttpContent content = new StringContent(jsonObjectA, Encoding.UTF8, "application/json");
 client.DefaultRequestHeaders.Add("userName", "".AppendWebConfigValue("username"));
 client.DefaultRequestHeaders.Add("password", "".AppendWebConfigValue("Password"));

 client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
 client.BaseAddress = new Uri("https://url/");
 httpResponse = client.PostAsync("method/test", content).Result;

请求应该是这样的:

User-Agent: Fiddler
content-Type : application/json
userName: username
password: password

但是,这是我在上面运行代码时得到的:

userName:usernamepassword:passwordAccept:application/json

我尝试使用 Environment.NewLine 添加,但它抛出了一个错误,即标题格式不正确。

如何在单独的行中添加 2 个标头,以便能够从服务器获得响应?

标签: c#asp.netrest

解决方案


您可以使用HttpRequestMessage创建请求并添加所需的标头:

static void Main(string[] args)
{
    var client = new HttpClient();

    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    var request = new HttpRequestMessage
    {
        RequestUri = new Uri("https://postb.in/1559160461304-0137126960325"),
        Method = HttpMethod.Post,
    };

    request.Headers.Add("username", "username");
    request.Headers.Add("password", "password");

    var httpResponse = client.SendAsync(request).Result;
}

在此处输入图像描述


推荐阅读