Я хочу отправить запрос в локальный API отдыха через прокси, который также настроен на localhost.
Для этого я подготовил следующую настройку:
public Task<string> MakeCall(ICredentials credentials, string targetUrl)
{
var clientHandler = new HttpClientHandler()
{
Proxy = ConfigureProxy(),
UseProxy = true,
};
var client = new HttpClient(clientHandler, true);
var resp = client.GetAsync(targetUrl).Result.Content.ReadAsStringAsync();
return resp;
}
private static WebProxy ConfigureProxy()
{
return new WebProxy
{
Address = new Uri("http://localhost:8082"),
BypassProxyOnLocal = false
};
}
Это работает, но не когда targetUrl является адресом локального хоста. Я нашел в сети этот хорошо объясненный ответ:
Как заставить System.Net.WebProxy не обходить локальные URL-адреса?
а также этот пост:
Реализация Microsoft жестко закодирована
Итак, у меня есть вопрос - есть ли способ обойти это поведение? Я хочу отправить запрос на остальные API (на localhost) через прокси (на localhost). Я где-то нашел флаг "-loopback", но мне это не помогло.
Я поэкспериментировал с файлом hosts, пытаясь настроить псевдоним для своего локального адреса, чтобы webproxy не отклонял его. В этом случае Ping каким-то образом отвечает на тот, который я создал, но httpclient не распознает его.
Заранее спасибо