在 HttpClient 上设置代理时出现问题
Problems setting proxy on HttpClient
在我的 C# 应用程序中,我试图向防火墙外的外部公司发送 HTTP 请求。当我使用下面的代码时,我收到远程站点强行关闭连接的错误。我假设我在使用代理设置时做错了什么,但我不确定是什么。我们的代理不需要身份验证。
var content = new StringContent(JsonConvert.SerializeObject(obj), Encoding.UTF8, "application/json");
using (var handler = new HttpClientHandler()) {
handler.Proxy = new WebProxy("http://proxy.my.domain.com:911");
using (var client = new HttpClient(handler: handler, disposeHandler: false)) {
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "...");
var response = await client.PostAsync($"https://...", content);
我已经打印出已发送的编码 JSON,如果我只是通过 curl
手动执行操作,尽管请求是正确的,所以我确定我的 URL, bearer token 和 JSON 都是正确的。
正如评论中提到的,代理变量必须设置为true。我想向遇到同样问题的其他用户强调这一点。
正如docs中提到的那样。
我举了一个小例子,说明如何在 factory 中使用它,例如 class:
private HttpClient ClientFactoryV02()
{
var clientHandler = new HttpClientHandler(){ UseProxy = true};
clientHandler.Proxy = new WebProxy("address-of-proxy");
var client = new HttpClient(clientHandler)
{
BaseAddress = new Uri("uri");
}
}
_createHttpClient = () => ClientFactoryV02();
感谢:ZagNut、Ben。
在我的 C# 应用程序中,我试图向防火墙外的外部公司发送 HTTP 请求。当我使用下面的代码时,我收到远程站点强行关闭连接的错误。我假设我在使用代理设置时做错了什么,但我不确定是什么。我们的代理不需要身份验证。
var content = new StringContent(JsonConvert.SerializeObject(obj), Encoding.UTF8, "application/json");
using (var handler = new HttpClientHandler()) {
handler.Proxy = new WebProxy("http://proxy.my.domain.com:911");
using (var client = new HttpClient(handler: handler, disposeHandler: false)) {
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "...");
var response = await client.PostAsync($"https://...", content);
我已经打印出已发送的编码 JSON,如果我只是通过 curl
手动执行操作,尽管请求是正确的,所以我确定我的 URL, bearer token 和 JSON 都是正确的。
正如评论中提到的,代理变量必须设置为true。我想向遇到同样问题的其他用户强调这一点。
正如docs中提到的那样。
我举了一个小例子,说明如何在 factory 中使用它,例如 class:
private HttpClient ClientFactoryV02()
{
var clientHandler = new HttpClientHandler(){ UseProxy = true};
clientHandler.Proxy = new WebProxy("address-of-proxy");
var client = new HttpClient(clientHandler)
{
BaseAddress = new Uri("uri");
}
}
_createHttpClient = () => ClientFactoryV02();
感谢:ZagNut、Ben。