c# - 如何在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 个标头,以便能够从服务器获得响应?
解决方案
您可以使用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;
}
推荐阅读
- python-3.x - 为什么我的“if”语句不排除零?
- laravel - 如果未在数据库中设置,则返回带有变量 = null 的视图
- angular - 如何在 iframe 上使用 Auth0 登录
- applescript - 如何在 Applescript 中等待文件添加到 iTunes
- javascript - 在 amcharts 工具提示中添加图例标记
- javascript - Typescript 自定义类使用数组 set/get 运算符
- graphviz - graphviz - 防止节点和边在没有样条的情况下重叠
- python - 计算模式在字符串中连续出现的最大数量
- c# - c#左加入2个DataTable
- swift - 在我的购物清单中添加产品 - 创建购物清单应用