ផ្ញើសំណើ .NET HttpClient តាម proxy
កំណត់ WebProxy លើ HttpClientHandler ហើយកុំទុកផ្លូវ proxy បិទ ឬភ្ជាប់វាទៅ client ខុស។
សំណើត្រូវប្រើ HttpClient ដែលបង្កើតដោយ proxy handler របស់អ្នក។ ការបង្កើត object WebProxy ដែលមិនទាក់ទង មិនប្តូរផ្លូវរបស់ client ផ្សេងទេ។
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 proxy ពិតពីសេវារបស់អ្នក ឬបញ្ជី HTTP proxy។ Top-level syntax នេះសមនឹងគម្រោង C# console ទំនើប។ គម្រោងចាស់អាចដាក់សេចក្តីបញ្ជាក្នុង asynchronous Main។
ពិនិត្យលក្ខណៈ handler ទាំងពីរ៖ Proxy ជ្រើស endpoint និង UseProxy=true បើកការប្រើវា។ បើ endpoint ដំណើរការដាច់ដោយឡែក តែមិនដំណើរការក្នុងកម្មវិធី សូមបញ្ជាក់ថាគ្មានកូដបិទ UseProxy និង call ប្រើ instance នេះ។ Handler ដាច់ដោយឡែកជៀសការពឹងផ្អែកលើការរក proxy របស់ process ឬ OS។
ពេលអ្នកដំណើរការ proxy ផ្តល់គណនី សូមកំណត់ NetworkCredential ទៅលក្ខណៈ WebProxy.Credentials។ Authorization របស់គេហទំព័រប្រើសម្រាប់ជំហានផ្សេង ហើយធាតុ IP:port សាធារណៈមិនផ្តល់ព័ត៌មានចូលប្រើលំនាំដើមទេ។ Listener http:// អាចដឹក HTTPS តាមរូង។ រក្សាការផ្ទៀងផ្ទាត់គោលដៅធម្មតា។
កម្មវិធីខ្លីនេះបញ្ចេញ object ពេលចេញ។ សម្រាប់ service call ញឹកញាប់ សូមតាមការណែនាំ .NET អំពីអាយុកាល client ហើយរក្សា client/handler សម្រាប់បន្ទុកការងារ ជំនួសឱ្យការបង្កើត connection pool ឡើងវិញរាល់សំណើ។ ពិនិត្យ status ត្រឡប់មក៖ ផ្លូវ proxy ដែលដំណើរការក៏អាចដឹកការបដិសេធពីគេហទំព័រ។