相关疑难解决方法(0)

更改 HttpClient 的默认请求标头

与我之前的问题有点相关,我有以下问题:

public static HttpClient client= new HttpClient();
//Basic HTTP client setup
  client.BaseAddress = new Uri(address);
  client.DefaultRequestHeaders.Add("custom_header", "MyCustomHeader");
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我设置了一个无法更改的基地址(上一个问题的问题),并且设置了一个自定义标头。

我的问题是我可以稍后在代码中更改此自定义标头(临时或永久)吗?

例如,我希望我的请求具有标题“MyCustomHeader”,但对于某些特定请求,我希望它是“MyOtherHeader”。

这可能吗?如果可能,我该怎么做?

c# dotnet-httpclient

7
推荐指数
1
解决办法
8887
查看次数

HttpClient.BaseAddress 的目的是什么,为什么我不能在第一次请求后更改它

所以我们大多数人可能已经读过我们应该重用 的实例,HttpClient而不是使用using和创建新的实例。这意味着我可以只HttpClient在我的程序中创建一个实例,并GetAsync使用每个请求的完整 uri 字符串进行调用。这使我的BaseAddress财产HttpClient。考虑以下代码:

HttpClient microsoftClient = new HttpClient() { BaseAddress = new Uri("https://www.microsoft.com/") };
HttpClient stackoverflowClient = new HttpClient() { BaseAddress = new Uri("https://stackoverflow.com/") };

var response = microsoftClient.GetAsync("about").Result;
Console.WriteLine($"I {((response.IsSuccessStatusCode) ? "can" : "cannot")} access microsoft.com/about from the microsoft client");

response = microsoftClient.GetAsync("trademarks").Result;
Console.WriteLine($"I {((response.IsSuccessStatusCode) ? "can" : "cannot")} access microsoft.com/trademarks from the microsoft client");

response = stackoverflowClient.GetAsync("company/about").Result;
Console.WriteLine($"I {((response.IsSuccessStatusCode) ? "can" : "cannot")} access stackoverflow.com/company/about …
Run Code Online (Sandbox Code Playgroud)

c# dotnet-httpclient

5
推荐指数
2
解决办法
8668
查看次数

标签 统计

c# ×2

dotnet-httpclient ×2