在我的 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、不记名 token 和 JSON 是一切正确。
最佳答案
如评论中所述,代理变量必须设置为 true。我想向遇到同样问题的其他用户强调这一点。
正如 docs 中提到的那样.
我举了一个小例子来说明如何在 factory 中使用它喜欢上课:
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。
关于.net - 在 HttpClient 上设置代理时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56552847/