.NET HttpClient അഭ്യർഥനകൾ പ്രോക്സിയിലൂടെ അയയ്ക്കുക
HttpClientHandler-ൽ WebProxy ക്രമീകരിച്ച് പ്രോക്സി വഴി ഓഫായിരിക്കുകയോ തെറ്റായ ക്ലയന്റുമായി ബന്ധിപ്പിക്കുകയോ ചെയ്യുന്നത് ഒഴിവാക്കുക.
അഭ്യർഥന നിങ്ങളുടെ പ്രോക്സി ഹാൻഡ്ലർ ഉപയോഗിച്ച് നിർമ്മിച്ച 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 ഓഫാക്കുന്നില്ലെന്നും കോൾ ഈ ഇൻസ്റ്റൻസ് ഉപയോഗിക്കുന്നുവെന്നും ഉറപ്പാക്കുക. പ്രത്യേക ഹാൻഡ്ലർ പ്രോസസ് അല്ലെങ്കിൽ OS പ്രോക്സി കണ്ടെത്തലിനെ ആശ്രയിക്കേണ്ടത് ഒഴിവാക്കുന്നു.
പ്രോക്സി നടത്തിപ്പുകാരൻ അക്കൗണ്ട് നൽകിയാൽ NetworkCredential-നെ WebProxy.Credentials പ്രോപ്പർട്ടിയിൽ നൽകുക. വെബ്സൈറ്റ് Authorization മറ്റൊരു ഘട്ടത്തിനാണ്; പൊതു IP:port എൻട്രി സ്ഥിര ലോഗിൻ വിവരം നൽകുന്നില്ല. http:// ലിസണറിന് ടണലിലൂടെ HTTPS കൊണ്ടുപോകാം; സാധാരണ ലക്ഷ്യസ്ഥാന പരിശോധന നിലനിർത്തുക.
ഈ ചെറുപ്രോഗ്രാം അവസാനിക്കുമ്പോൾ ഒബ്ജക്ടുകൾ വിട്ടുകൊടുക്കുന്നു. ആവർത്തിച്ചുള്ള സേവന കോളുകൾക്ക് .NET ക്ലയന്റ് ആയുസ് നിർദേശം പിന്തുടർന്ന് ഓരോ അഭ്യർഥനയ്ക്കും കണക്ഷൻ പൂളുകൾ പുനർനിർമ്മിക്കാതെ ജോലിഭാരത്തിന് ക്ലയന്റ്/ഹാൻഡ്ലർ നിലനിർത്തുക. മടങ്ങുന്ന സ്റ്റാറ്റസ് നോക്കുക: പ്രവർത്തിക്കുന്ന പ്രോക്സി വഴിയും വെബ്സൈറ്റിന്റെ നിരസനം കൊണ്ടുവരാം.