如何将Content-Type标头添加到.Net GET Web请求?

时间:2018-10-13 23:28:04

标签: c# .net json http-headers httpclient

我需要将以下curl呼叫转换为HttpClient呼叫:

卷曲:

curl -i -X GET "https://dev.wetransfer.com/v2/transfers/{transfer_id}/files/{file_id}/upload-url/{part_number}" \
  -H "Content-Type: application/json" \
  -H "x-api-key: your_api_key" \
  -H "Authorization: Bearer jwt_token"

我尝试使用Httpclient:

using (var client = new HttpClient())
{
 client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
 client.DefaultRequestHeaders.Add("x-api-key", My_Correct_ApiKey);
 client.DefaultRequestHeaders.Add("Authorization",My_Correct_Token);
 var xxx = client.GetAsync($"https://dev.wetransfer.com/v2/transfers/{response.Id}/files/{file.Id}/upload-url/{partNumber}").Result;
}

您必须相信我正确填写了参数。 现在,curl调用将按预期方式工作并返回Json消息。 .Net代码失败,并显示“不支持的媒体类型”响应。

奇怪的是,该请求没有任何Json序列化的内容:所有需要的信息都打包在Request Uri中。 (据我了解,HttpClient不支持GET调用中的内容。)

我要去哪里错了?

1 个答案:

答案 0 :(得分:0)

可以找到答案here

基本上,.Net不允许您在GET调用上添加Content-Type标头,因为.Net中的GET调用不支持Content!该链接指向的黑客程序消除了对Content-Type标头的此限制。