在向 Web 服务发送请求之前,我需要将 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();
创建一个 HttpRequestMessage
,将 Method 设置为 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();
当它可以是所有请求的相同标头或时,您可以在每个请求后处理客户端,您可以使用 DefaultRequestHeaders.Add
选项:
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);
默认标头设置为 HTTPCLIENT 以在每个请求上发送到服务器。
HttpClient
,你的代码听起来像 Java 的东西
HttpClient
很失望,直到我看到你可以做到这一点。var response = await client.SendAsync
而不是ContinueWith
和task.Wait()