Добавление заголовков Http в HttpClient

Все:

Мне нужно добавить заголовки http в HttpClient, прежде чем я отправлю запрос в веб-службу. Как мне сделать это для отдельного запроса (в отличие от HttpClient для всех будущих запросов)? Я не уверен, возможно ли это вообще.

var client = new HttpClient();
var task =
    client.GetAsync("http://www.someURI.com")
    .ContinueWith((taskwithmsg) =>
    {
        var response = taskwithmsg.Result;

        var jsonTask = response.Content.ReadAsAsync<JsonObject>();
        jsonTask.Wait();
        var jsonObject = jsonTask.Result;
    });
task.Wait();

1 ответ

Решение

Создать HttpRequestMessageустановите метод на GETустановите заголовки, а затем используйте SendAsync вместо GetAsync,

var client = new HttpClient();
var request = new HttpRequestMessage() {
                                            RequestUri = new Uri("http://www.someURI.com"),
                                            Method = HttpMethod.Get,
                                        };
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("text/plain"));
var task = client.SendAsync(request)
    .ContinueWith((taskwithmsg) =>
    {
        var response = taskwithmsg.Result;

        var jsonTask = response.Content.ReadAsAsync<JsonObject>();
        jsonTask.Wait();
        var jsonObject = jsonTask.Result;
    });
task.Wait();

Вы также можете добавить заголовок.

            //using (var client = new HttpClient())
{
 client.DefaultRequestHeaders.Add("apikey","xxxxxxxxx");
 }           //       

Чтобы установить настраиваемые заголовки ПО ЗАПРОСУ, создайте запрос с настраиваемым заголовком, прежде чем передавать его httpclient для отправки на сервер http. например:

HttpClient client = HttpClients.custom().build();
HttpUriRequest request = RequestBuilder.get()
  .setUri(someURL)
  .setHeader(HttpHeaders.CONTENT_TYPE, "application/json")
  .build();
client.execute(request);

Заголовок по умолчанию - SET ON HTTPCLIENT для отправки при каждом запросе на сервер.

Другие вопросы по тегам