如何在C#中发出GET请求,设置内容类型头&;自定义标题

如何在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}",

我试图在C#中发出GET请求,需要将内容类型头设置为application/json,并使用api键设置头。我尝试过搜索,但令人惊讶的是没有找到一个简单的方法来实现这一点

非常接近我想要的,因为他们可以在这里设置Content-Type头,但是我还需要为我的api键设置一个自定义头,并且没有其他字段

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密钥。