Как сделать запрос GET в C #, установить заголовок Content-Type и пользовательский заголовок - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь сделать запрос GET в C #, и мне нужно установить заголовок Content-Type на application / json и установить заголовок с моим ключом API. Я пытался искать, но, к удивлению, не нашел простого способа сделать это.

Этот ответ очень близок к тому, что я хочу, потому что они могут установить здесь заголовок Content-Type, но мне также нужно установить настраиваемый заголовок для моего ключа API и StringContent не имеет дополнительных полей для такой вещи.

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

^ их ответ, для справки. Это мой код, но я получаю нулевой результат. Я знаю, что я могу поразить 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}");

Спасибо за помощь !!!!

...