Siųsti .NET HttpClient užklausas per tarpinį serverį
Sukonfigūruokite WebProxy HttpClientHandler ir venkite išjungto tarpinio maršruto ar susiejimo su netinkamu klientu.
Užklausa turi naudoti HttpClient, sukurtą su jūsų tarpinio serverio apdorojimo objektu. Nesusijusio WebProxy objekto sukūrimas nekeičia kito kliento kelio.
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());Dokumentacijos adresą pakeiskite tikru HTTP tarpiniu serveriu iš savo paslaugos ar HTTP tarpinių serverių sąrašo. Ši aukščiausio lygio sintaksė tinka moderniam C# konsolės projektui; senesni projektai gali perkelti sakinius į asinchroninį Main.
Patikrinkite abi apdorojimo objekto savybes: Proxy parenka galinį tašką, UseProxy=true įjungia jo naudojimą. Jei taškas veikia atskirai, bet ne programoje, patvirtinkite, kad kodas neišjungia UseProxy ir kvietimas naudoja šį egzempliorių. Atskiras objektas leidžia nepriklausyti nuo proceso ar OS tarpinio serverio aptikimo.
Kai operatorius pateikia paskyrą, priskirkite NetworkCredential savybei WebProxy.Credentials. Svetainės Authorization skirta kitam žingsniui, o viešas IP:port įrašas neteikia numatytųjų prisijungimo duomenų. http:// klausantis taškas gali perduoti HTTPS tuneliu; išlaikykite įprastą paskirties patikrą.
Ši trumpa programa baigdama atlaisvina objektus. Pakartotiniams paslaugos kvietimams laikykitės .NET kliento gyvavimo trukmės gairių ir išlaikykite klientą/apdorojimo objektą darbo krūviui, o ne kurkite ryšių telkinius iš naujo kiekvienai užklausai. Patikrinkite grąžintą būseną: veikiantis tarpinio serverio kelias vis tiek gali perduoti svetainės atsisakymą.