我正在尝试在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}");
感谢您的帮助!!!!