我正在使用 .NET 2.0 中的WebClient类通过 SSL 执行 HTTP POST。
目前我正在手动设置用户代理标头,如下所示:
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,告诉它客户端尝试连接的位置。
问题是,如果您通过 HttpWebRequest.UserAgent 或 WebClient.Headers.Add 在 .NET 中设置用户代理标头,它不会将其添加到初始 CONNECT 请求中。它确实将其添加到后续 SSL 流量中,但这不是所需要的。
如果这是 C++,我只需调用 WinHttpOpen() 来创建 sesson 并设置 pwszUserAgent 参数来设置整个会话的用户代理。不幸的是,我在 .NET 中找不到等价物。
谁能指出我正确的方向?我确信其他人在.NET 中构建客户端应用程序时一定遇到过这个问题。