繁体   English   中英

如何使用HttpClient在(HTTP GET)Rest请求头集合中添加'Content-Type'头?

[英]how to add 'Content-Type' header in (HTTP GET) Rest request header collection using HttpClient?

我正在使用HttpClient进行休息服务。 当我尝试在“Get”请求标头中添加“Content-Type”时,我有一个问题。

我知道“Content-Type”适用于请求正文部分发送的内容但是我需要发送带有请求标题部分的“Content-Type”。

我还尝试从HttpRequestHeaders的 Invalid Header列表中删除“Content-Type”标头

我找到链接如何为HttpClient请求设置Content-Type标头?

        Dim field = GetType(System.Net.Http.Headers.HttpRequestHeaders).GetField("invalidHeaders", System.Reflection.BindingFlags.NonPublic Or System.Reflection.BindingFlags.[Static])

        If field IsNot Nothing Then
            Dim invalidFields = DirectCast(field.GetValue(Nothing), HashSet(Of String))
            invalidFields.Remove("Content-Type")
        End If

但我的问题没有解决,我有例外

的InnerException:

Message =必须使用适当的 属性或方法 修改“content-type”标头

   StackTrace:
        at System.Net.WebHeaderCollection.ThrowOnRestrictedHeader(String headerName)
        at System.Net.WebHeaderCollection.Add(String name, String value)
        at System.Net.Http.HttpClientHandler.SetRequestHeaders(HttpWebRequest webRequest, HttpRequestMessage request)
        at System.Net.Http.HttpClientHandler.CreateAndPrepareWebRequest(HttpRequestMessage request)
        at System.Net.Http.HttpClientHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   InnerException:

我发现像Postman或SoupUI这样的工具允许这样做。

请帮我找一些解决方案。

谢谢

HttpWebRequest可能会帮您解决问题。

private static string CallService(string url)
{
    WebRequest req = WebRequest.Create(url);
    req.Method = "GET";
    String json;
    req.ContentType = "application/json; charset=utf-8";
    var resp = req.GetResponse();
    using (varstream = resp.GetResponseStream())
    {
        var re = new StreamReader(stream);

            json = re.ReadToEnd();
        }

        return json; 
    }
}

可以从获取异步HttpWebRequest的响应中找到异步实现

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM