Проблемы с настройкой прокси на HttpClient - PullRequest
3 голосов
/ 12 июня 2019

В моем приложении на 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, токен на предъявителя и JSON все верны.

1 Ответ

1 голос
/ 21 июня 2019

Как уже упоминалось в комментариях, переменная прокси должна быть установлена ​​на true .Я хотел бы подчеркнуть это для других пользователей, имеющих ту же проблему.

Как это упоминается в документах .

Я приведу небольшой пример того, как использовать его в фабрике подобном классе:

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, Бен.

...