Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何添加';内容类型';使用HttpClient的(HTTP GET)Rest请求标头集合中的标头?_Vb.net_Rest_Dotnet Httpclient_Webservices Client - Fatal编程技术网

Vb.net 如何添加';内容类型';使用HttpClient的(HTTP GET)Rest请求标头集合中的标头?

Vb.net 如何添加';内容类型';使用HttpClient的(HTTP GET)Rest请求标头集合中的标头?,vb.net,rest,dotnet-httpclient,webservices-client,Vb.net,Rest,Dotnet Httpclient,Webservices Client,我正在使用HttpClient进行rest服务。当我试图在我的'Get'请求头中添加“Content Type”时,我曾经遇到过一个问题 我知道“内容类型”适合于请求主体部分中的内容发送,但我需要将“内容类型”与请求头部分一起发送 我还尝试从HttpRequestHeaders的无效头列表中删除“Content-Type”头 我找到了链接 但我的问题没有解决我有例外 内部异常: 消息=必须使用适当的属性或方法修改“内容类型”标题。 StackTrace: at System

我正在使用HttpClient进行rest服务。当我试图在我的'Get'请求头中添加“Content Type”时,我曾经遇到过一个问题

我知道“内容类型”适合于请求主体部分中的内容发送,但我需要将“内容类型”与请求头部分一起发送

我还尝试从HttpRequestHeaders的无效头列表中删除“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:
我发现一些工具,如邮递员或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中找到异步实现,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; 
    }
}

可以从

中找到异步实现,那么您的要求是什么?您想在请求中添加内容类型标头,还是要将其删除?添加时您是否面临任何问题?遵循这篇文章,了解如何在使用httpClient调用GET API时向请求添加标题。这是一个有用的链接,但实际问题是我想在标题中添加内容类型,如
client.DefaultRequestHeaders.add(“内容类型”,“应用程序/json”)
它允许我添加Accept标头,但当我尝试添加内容类型时,它会引发以下异常:标头名称使用不当。确保请求头与HttpRequestMessage、HttpResponseMessage的响应头以及HttpContent对象的内容头一起使用。这似乎是HTTP规则,它不允许为GET请求设置“内容类型”。你能解释一下你的要求吗?你的要求是什么?您想在请求中添加内容类型标头,还是要将其删除?添加时您是否面临任何问题?遵循这篇文章,了解如何在使用httpClient调用GET API时向请求添加标题。这是一个有用的链接,但实际问题是我想在标题中添加内容类型,如
client.DefaultRequestHeaders.add(“内容类型”,“应用程序/json”)
它允许我添加Accept标头,但当我尝试添加内容类型时,它会引发以下异常:标头名称使用不当。确保请求头与HttpRequestMessage、HttpResponseMessage的响应头以及HttpContent对象的内容头一起使用。这似乎是HTTP规则,它不允许为GET请求设置“内容类型”。你能解释一下你的需求是什么迫使你将这个头添加到请求中的吗?这很有用,但也有一些原因,比如HttpClient优于WebRequest。所以我选择httpclient来实现。我希望你能理解,所以请给我另一个解决方案。HttpClient本身不支持此功能,除非你想破解它。这里解释了一个这样的黑客,我尝试过,但使用反射是可行的,当我在.Net 4上使用System.Net.Http(2.0.0.0),但在.Net 4的更新支持版本System.Net.Http(2.2.29.0)上不工作时,我的问题的所有答案都是Hanks Chetan,如果您有更多的信息,请与我分享在未来。这是有用的,但一些原因,如HttpClient比WebRequest的好处。所以我选择httpclient来实现。我希望你能理解,所以请给我另一个解决方案。HttpClient本身不支持此功能,除非你想破解它。这里解释了一个这样的黑客,我尝试过,但使用反射是可行的,当我在.Net 4上使用System.Net.Http(2.0.0.0)时,但在.Net 4的更新支持版本System.Net.Http(2.2.29.0)上不起作用。对于我的所有查询,如果您有更多相同的信息,请在将来与我分享。