首页 > C# > 如何为 HttpClient 请求设置 Content-Type 标头?

如何为 HttpClient 请求设置 Content-Type 标头?

上一篇 下一篇

我正在尝试根据我正在调用的 API 的要求设置对象的标头。Content-TypeHttpClient

我尝试设置如下:Content-Type

using (var httpClient = new HttpClient())
{
    httpClient.BaseAddress = new Uri("http://example.com/");
    httpClient.DefaultRequestHeaders.Add("Accept", "application/json");
    httpClient.DefaultRequestHeaders.Add("Content-Type", "application/json");
    // ...
}

它允许我添加标题,但是当我尝试添加它时会引发以下异常:AcceptContent-Type

误用的标头名称。确保请求标头与 一起使用,响应标头与 一起使用,
内容标头与
对象一起使用。
HttpRequestMessageHttpResponseMessageHttpContent

如何在请求中设置标头?Content-TypeHttpClient

分割线

网友回答:

对于那些没有看到约翰斯评论卡洛斯解决方案的人……

req.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");

分割线

网友回答:

内容类型是内容的标头,而不是请求的标头,这就是失败的原因。 正如 Robert Levy 所建议的那样,可能会起作用,但您也可以在创建请求内容本身时设置内容类型(请注意,代码片段在两个位置添加 – 用于接受和内容类型标头):AddWithoutValidationapplication/json

HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://example.com/");
client.DefaultRequestHeaders
      .Accept
      .Add(new MediaTypeWithQualityHeaderValue("application/json"));//ACCEPT header

HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "relativeAddress");
request.Content = new StringContent("{"name":"John Doe","age":33}",
                                    Encoding.UTF8, 
                                    "application/json");//CONTENT-TYPE header

client.SendAsync(request)
      .ContinueWith(responseTask =>
      {
          Console.WriteLine("Response: {0}", responseTask.Result);
      });

分割线

网友回答:

如果你不介意一个小的库依赖,Flurl.Http [披露:我是作者] 使这个超级简单。它的方法负责序列化内容和设置标头,并反序列化响应。如果需要标头,则需要自己设置,但 Flurl 也提供了一种非常干净的方法:PostJsonAsynccontent-typeReceiveJsonaccept

using Flurl.Http;

var result = await "http://example.com/"
    .WithHeader("Accept", "application/json")
    .PostJsonAsync(new { ... })
    .ReceiveJson<TResult>();

Flurl使用HttpClient和 Json.NET,它是一个PCL,所以它可以在各种平台上工作。

PM> Install-Package Flurl.Http

模板简介:该模板名称为【如何为 HttpClient 请求设置 Content-Type 标头?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【C#】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 382次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 02-22
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
企业网站 自适应 html5 微信模板 微信图片 单页式简历模板 微信公众平台 微信文章 微信素材 响应式
您可能会喜欢的其他模板