Надсыланне запытаў .NET HttpClient праз проксі
Наладзьце WebProxy у HttpClientHandler і не пакідайце проксі-маршрутызацыю выключанай або звязанай з іншым кліентам.
Запыт павінен выкарыстоўваць HttpClient, створаны з вашым апрацоўшчыкам проксі. Стварэнне незвязанага аб’екта WebProxy не змяняе маршрут іншага кліента.
using System;
using System.Net;
using System.Net.Http;
var proxy = new WebProxy("http://203.0.113.10:8080")
{
BypassProxyOnLocal = false
};
using var handler = new HttpClientHandler
{
Proxy = proxy,
UseProxy = true
};
using var client = new HttpClient(handler)
{
Timeout = TimeSpan.FromSeconds(15)
};
using var response = await client.GetAsync("https://example.com/");
Console.WriteLine((int)response.StatusCode);
Console.WriteLine(await response.Content.ReadAsStringAsync());Замяніце дакументацыйны адрас сапраўдным HTTP-проксі свайго сэрвісу або са спіса HTTP-проксі. Гэты сінтаксіс верхняга ўзроўню падыходзіць сучаснаму кансольнаму праекту C#; старыя праекты могуць змясціць аператары ў асінхронны Main.
Праверце абедзве ўласцівасці апрацоўшчыка: Proxy выбірае канцавы пункт, а UseProxy=true уключае яго выкарыстанне. Калі пункт працуе асобна, але не ў праграме, упэўніцеся, што код не выключае UseProxy і выклік выкарыстоўвае гэты асобнік. Асобны апрацоўшчык прыбірае залежнасць ад выяўлення налад працэсам ці АС.
Калі аператар проксі дае ўліковы запіс, прызначце NetworkCredential уласцівасці WebProxy.Credentials. Authorization сайта датычыцца іншага звяна, а публічны запіс IP:port не дае стандартных даных уваходу. Слухач http:// можа пераносіць HTTPS тунэлем; захоўвайце звычайную праверку мэты.
Гэтая кароткая праграма вызваляе аб’екты пры выхадзе. Для паўторных выклікаў сэрвісу выконвайце рэкамендацыі .NET адносна часу жыцця кліента і захоўвайце кліента/апрацоўшчык для нагрузкі замест перастварэння пулаў злучэнняў для кожнага запыту. Правярайце вернуты статус: працоўны шлях проксі ўсё адно можа перадаць адмову сайта.