[英]How do I set multiple headers using PostAsync in C#?
我有一些工作代码:
using (var client = new HttpClient())
{
HttpResponseMessage response;
response = client.PostAsync(Url, new StringContent(Request, Encoding.UTF8, header)).Result;
}
//以上工作适用于简单的标题,例如“application / json”
如果我想要多个标题,我该怎么办? 例如添加“myKey”,“foo”对和“Accept”,“image / foo1”
如果我尝试在.Result行之前添加以下内容,则intellisense会抱怨(“标题”一词为红色,“无法解析符号'标题'”:
client.Headers.Add("myKey", "foo");
client.Headers.Add("Accept", "image/foo1");
您可以通过StringContent
访问Headers
属性:
var content = new StringContent(Request, Encoding.UTF8, header);
content.Headers.Add(...);
然后将StringContent传递给PostAsync
调用:
response = client.PostAsync(Url, content).Result;
我停止使用Post / Get * Async方法支持SendAsync(...)
方法和HttpRequestMessage
Send Async是大哥,它可以让您获得您无法实现的全部灵活性。
using System.Net.Http;
var httpRequestMessage = new HttpRequestMessage();
httpRequestMessage.Method = httpMethod;
httpRequestMessage.RequestUri = new Uri(url);
httpRequestMessage.Headers
.UserAgent
.Add(new Headers.ProductInfoHeaderValue(
_applicationAssembly.Name,
_applicationAssembly.Version.ToString()));
HttpContent httpContent = new StringContent(json, Encoding.UTF8, "application/json");
switch (httpMethod.Method)
{
case "POST":
httpRequestMessage.Content = httpContent;
break;
}
var result = await httpClient.SendAsync(httpRequestMessage);
result.EnsureSuccessStatusCode();
你也可以使用
var client = new HttpClient();
client.DefaultRequestHeaders.TryAddWithoutValidation("headername","headervalue");
如果你只想在HttpClient类上设置一次标题。 以下是DefaultRequestHeaders.TryAddWithoutValidation
的MSDN文档
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.