Permintaan mesti menggunakan HttpClient yang dibina dengan pengendali proksi anda. Mencipta objek WebProxy yang tidak berkaitan tidak mengubah laluan klien lain.

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());

Gantikan alamat dokumentasi dengan proksi HTTP sebenar daripada perkhidmatan anda atau senarai proksi HTTP. Sintaks aras atas ini sesuai untuk projek konsol C# moden; projek lama boleh meletakkan pernyataan dalam Main tak segerak.

Semak kedua-dua sifat pengendali: Proxy memilih titik akhir dan UseProxy=true membolehkan penggunaannya. Jika titik akhir berfungsi berasingan tetapi tidak dalam aplikasi, pastikan tiada kod menyahaktifkan UseProxy dan panggilan menggunakan tika ini. Pengendali khusus mengelakkan pergantungan pada penemuan proses atau OS.

Apabila pengendali proksi membekalkan akaun, tetapkan NetworkCredential pada sifat WebProxy.Credentials. Authorization laman digunakan untuk hop berbeza, dan entri IP:port awam tidak membekalkan log masuk lalai. Pendengar http:// boleh membawa HTTPS melalui terowong; kekalkan pengesahan destinasi biasa.

Program ringkas ini melupuskan objek ketika keluar. Bagi panggilan perkhidmatan berulang, ikut panduan .NET tentang jangka hayat klien dan kekalkan klien/pengendali untuk beban kerja, bukannya membina semula kumpulan sambungan setiap permintaan. Periksa status dipulangkan: laluan proksi berfungsi masih boleh membawa penolakan laman.

Artikel berkaitan