Я использую WebClient class в .NET 2.0 для выполнения HTTP POST через SSL.
В настоящее время я вручную устанавливаю заголовок пользовательского агента следующим образом:
wc = new WebClient();
wc.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
Это работает нормально, за исключением случаев, когда я делаю запрос через прокси-сервер, который выполняет туннелирование HTTP и ожидает определенный заголовок пользовательского агента в команде HTTP CONNECT.
Когда прокси действует как туннель для SSL, он сначала получает HTTP CONNECT, который сообщает ему, к чему пытается подключиться клиент.
Проблема в том, что если вы устанавливаете заголовок пользовательского агента в .NET через HttpWebRequest.UserAgent или WebClient.Headers.Add, он не добавляет его в исходный запрос CONNECT. Он добавляет его к последующему SSL-трафику, но это не то, что нужно.
Если бы это был C++, я бы просто вызвал WinHttpOpen() для создания сеанса и установил параметр pwszUserAgent для установки пользовательского агента для всего сеанса. К сожалению, я не могу найти эквивалент в .NET.
Может кто-то указать мне верное направление? Я уверен, что кто-то еще должен был столкнуться с этой проблемой при создании клиентских приложений в .NET.