Добавление заголовков 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 для отправки при каждом запросе на сервер.