HttpClient请求头自定义

Posted

技术标签:

【中文标题】HttpClient请求头自定义【英文标题】:HttpClient request header customisation 【发布时间】:2013-03-06 00:54:53 【问题描述】:

是否可以在 .Net/Web Api 中将 HttpClient 的请求 ACCEPT 标头设置为包含“application/json;odata=verbose”?

我知道如何设置请求媒体类型

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

但是如何设置 odata=verbose 部分?我似乎无法在网上找到任何解决方案来做到这一点。

我必须改用 HttpWebRequest 吗?基本上我需要调用sharepoint 2013 rest api,并且需要odata=verbose部分。

【问题讨论】:

【参考方案1】:

MediaTypeWithQualityHeaderValue 有一个名为 Parameters 的属性,您可以在其中添加 'odata=verbose' 参数。

其他简单的方法是调用 MediaTypeWithQualityHeaderValue 的 Parse/TryParse 方法,您可以提供整个“application/json;odata=verbose”媒体类型字符串。

这是一个使用 Parse 的示例

using (HttpClient httpClient = new HttpClient())

    //Setup Accept Header
    MediaTypeWithQualityHeaderValue acceptHeader = MediaTypeWithQualityHeaderValue.Parse("application/json;odata=verbose");
    httpClient.DefaultRequestHeaders.Accept.Add(acceptHeader);

    //... do other stuff

【讨论】:

谢谢,这正是我想要的。

以上是关于HttpClient请求头自定义的主要内容,如果未能解决你的问题,请参考以下文章

HttpClient 与 HttpWebRequest

使用 Httpclient 信任自签名证书

httpclien模拟浏览器

我的 HttpClient 单例实现是不是合适? [关闭]

未捕获的类型错误:无法读取 getOriginalError 处未定义的属性“ngOriginalError”-当 httpClient 返回字符串时

cnzz 模拟请求登录(传入url get data ) demo