Permintaan harus memakai HttpClient yang dibuat dengan handler proxy Anda. Membuat objek WebProxy yang tidak terkait tidak memengaruhi rute 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());

Ganti alamat dokumentasi dengan proxy HTTP nyata dari layanan Anda atau daftar proxy HTTP. Sintaks tingkat atas ini cocok untuk proyek konsol C# modern; proyek lama dapat menaruh pernyataan dalam Main asinkron.

Periksa kedua properti handler: Proxy memilih endpoint dan UseProxy=true mengaktifkan pemakaiannya. Jika endpoint berfungsi sendiri tetapi tidak dalam aplikasi, pastikan tidak ada kode yang menonaktifkan UseProxy dan panggilan memakai instans ini. Handler khusus menghindari ketergantungan pada penemuan oleh proses atau OS.

Jika pengelola proxy menyediakan akun, tetapkan NetworkCredential ke properti WebProxy.Credentials. Authorization situs melayani hop yang berbeda, dan entri IP:port publik tidak menyediakan login bawaan. Listener http:// dapat membawa HTTPS melalui tunnel; pertahankan verifikasi tujuan normal.

Program singkat ini melepas objek saat keluar. Untuk panggilan layanan berulang, ikuti panduan .NET tentang masa hidup klien dan pertahankan klien/handler untuk beban kerja, bukan membangun ulang pool koneksi tiap permintaan. Periksa status yang dikembalikan: jalur proxy yang berfungsi tetap dapat membawa penolakan situs.

Artikel terkait