如何在C#中进行GET请求,设置Content-Type标题&自定义标题

时间:2018-05-04 19:40:42

标签: c# rest dotnet-httpclient

我正在尝试在C#中发出GET请求,并且需要将Content-Type标头设置为application / json并使用我的api密钥设置标头。我试过搜索,但令人惊讶的是没有找到一种直接的方法来做到这一点。

This answer非常接近我想要的,因为他们可以在这里设置Content-Type标头,但我还需要为我的api密钥设置自定义标头,而StringContent则不需要有这样的事情的其他领域。

request.Content = new StringContent("{\"name\":\"John Doe\",\"age\":33}",
                                    Encoding.UTF8, 
                                    "application/json");//CONTENT-TYPE header

^他们的答案,供参考。 这是我的代码,但我得到一个null结果。我知道我可以使用这些值来点击postman中的api,但我假设我配置HttpRequestMessage的方式是错误的,因此请求失败。

HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage
 {
   Method = HttpMethod.Get        
 };

// need Content to be not null, this seems wrong   
request.Content = new StringContent("");

// need to set Content-Type to application/json
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
// set api-key header
request.Content.Headers.Add("api-key", apiAdminKey);

request.RequestUri = new Uri($"{URL}?id={id}");

return client.SendAsync(request, HttpCompletionOption.ResponseContentRead);

有什么建议吗?

更新

让它只使用HttpClient,出于某种原因我认为我无法使用client.DefaultRequestHeaders.Add设置标题。

HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("api-key", apiAdminKey);
return client.GetAsync($"{URL}?id={id}");

感谢您的帮助!!!!

0 个答案:

没有答案