Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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
C# 将内容类型头添加到httpclient获取请求_C#_Httpclient - Fatal编程技术网

C# 将内容类型头添加到httpclient获取请求

C# 将内容类型头添加到httpclient获取请求,c#,httpclient,C#,Httpclient,我正在尝试将内容类型标题添加到HttpClient获取请求,下面是我的代码: HttpClient client=new .... bool added = client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/x-www-form-urlencoded"); var response = await client.GetAsync(... 但是

我正在尝试将
内容类型
标题添加到HttpClient获取请求,下面是我的代码:

HttpClient client=new ....
bool added = client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/x-www-form-urlencoded");
var response = await client.GetAsync(...
但是添加的
变量为false,即无法添加标题

如何添加此标题

注意:

处理POST请求,我询问了获取

如果您查看以下内容:

生成包含有效负载正文的消息的发送方应 在该消息中生成内容类型标头字段,除非 用户不知道所附表示的预期媒体类型 发件人。如果内容类型标题字段不存在,则收件人 可以采用“应用程序/八位字节流”的媒体类型 ([RFC2046],第4.5.1节)或检查数据以确定其类型

同时检查

HTTP GET方法请求指定资源的表示形式。使用GET的请求应该只检索数据

在GET请求中发送body/payload可能会导致一些现有实现拒绝该请求——虽然规范没有禁止,但语义尚未定义。最好避免在GET请求中发送有效负载

实际上,这意味着无论您发送还是不发送标题,它都将被忽略和/或拒绝


设置内容类型时,最好从内容本身进行设置:

我目前正在处理一个项目,我使用POST请求调用api。 这可能对你的情况有所帮助。它是如何在微软官方文档中完成的

using (var content = new ByteArrayContent(byteData))
{
// This example uses the "application/octet-stream" content type.
// The other content types you can use are "application/json"
// and "multipart/form-data".
content.Headers.ContentType = new mediaTypeHeaderValue("application/octet-stream");
response = await client.PostAsync(uriBase, content);
}

这回答了你的问题吗@如果链接是关于POST的,我会问你关于GETYou的问题。
GET
请求不能有正文,因此没有内容
x-www-form-urlencoded
仅适用于
POST
GET
的等效方法是简单地将参数添加到URL。@Jeroenmoster我用chrome浏览器发出了一些GET请求,其中一个请求头是Content-Type,可以在DevTools的“网络”选项卡下看到它。我想添加头在技术上并不违法,甚至添加有效负载也不违法(该标准只是说它没有定义语义)。对于服务器来说,要求标头正确处理请求的形式仍然非常糟糕——如果它实际上需要一个正文来处理请求,则更是如此。请仔细检查是否确实需要添加标头才能使事情正常进行。但是
client.GetAsync(…
仅在尝试添加标头后发生,即它还不知道我正在尝试执行
GET
请求