如何在C#中发出GET请求,设置内容类型头&;自定义标题
我试图在C#中发出GET请求,需要将内容类型头设置为application/json,并使用api键设置头。我尝试过搜索,但令人惊讶的是没有找到一个简单的方法来实现这一点 非常接近我想要的,因为他们可以在这里设置Content-Type头,但是我还需要为我的api键设置一个自定义头,并且没有其他字段如何在C#中发出GET请求,设置内容类型头&;自定义标题,c#,rest,dotnet-httpclient,C#,Rest,Dotnet Httpclient,我试图在C#中发出GET请求,需要将内容类型头设置为application/json,并使用api键设置头。我尝试过搜索,但令人惊讶的是没有找到一个简单的方法来实现这一点 非常接近我想要的,因为他们可以在这里设置Content-Type头,但是我还需要为我的api键设置一个自定义头,并且没有其他字段 request.Content = new StringContent("{\"name\":\"John Doe\",\"age\":33}",
request.Content = new StringContent("{\"name\":\"John Doe\",\"age\":33}",
Encoding.UTF8,
"application/json");//CONTENT-TYPE header
^他们的答案,供参考。
这是我的代码,但我得到一个空结果。我知道我可以在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}");
谢谢你的帮助 使用您的请求并将其与postmanhtprequestmessage.Headers.Add(“id”,“somevalue”)…这通常对我有效。您能提供一个示例请求和预期请求进行比较吗?我建议您使用
HttpWebRequest
解析的WebRequest
,这在您的情况下非常好。如果您不介意更改整个代码,请告诉我,我将发布完整的回复。@ChandraSekharV它说Headers属性不能分配给,它是只读的。您正在添加api键作为内容头,但它应该是请求头,而不是内容头,除非您的api是以这种方式实现的。使用httpClient.DefaultRequestHeaders
添加api密钥。