我正在使用 HttpClient 进行休息服务。当我尝试在'获取'请求标头中添加“内容类型”时,我遇到了一个问题。
我知道“Content-Type”适用于请求正文部分中发送的内容但是我需要发送带有请求标题部分的“Content-Type”。
我还尝试从 HttpRequestHeaders
的无效页眉列表中删除“Content-Type”标题我找到了链接How do you set the Content-Type header for an HttpClient request?
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:
消息=必须使用相应的 属性或方法修改“内容类型”标头。
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这样的工具允许这样做。
请帮我找一些解决方案。
谢谢
答案 0 :(得分:0)
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;
}
}
找到异步实现