我试图读取从 url 返回的数据。考虑以下代码:
private static void Read()
{
_targetUrl = "https://url";
_proxyUrl = "http://differentUrl:8080";
ServicePointManager.ServerCertificateValidationCallback += AcceptAllCertifications;
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
WebProxy webProxy = new WebProxy
{
Address = _proxyUri,
BypassProxyOnLocal = false,
UseDefaultCredentials = false
};
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(_targetUrl);
request.Proxy = webProxy;
request.Method = "GET";
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
string ret = "";
byte[] buffer = new byte[1048];
int read;
while (stream != null && (read = stream.Read(buffer, 0, buffer.Length)) > 0)
{
Console.Write(Encoding.ASCII.GetString(buffer, 0, read));
ret += Encoding.ASCII.GetString(buffer, 0, read);
}
Console.WriteLine("READ: \n{0}", ret);
}
private static bool AcceptAllCertifications(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors policyErrors)
{
return true;
}
我被抛出了一个异常:
System.Net.WebException:基础连接已关闭:接收时发生意外错误。---> System.ComponentModel.Win32Exception: 客户端和服务器无法通信,因为它们没有共同的算法
在以下代码上:
WebResponse response = request.GetResponse();
我已经通过浏览器直接访问 _targetUrl 进行了验证,其中代理设置为与代码中定义的代理相同,并且绝对能够看到浏览器上返回的数据。
我通过从四处搜索的参考资料中获取零碎的代码来编写上面的代码。我发现的大多数建议似乎与我现在使用的几乎相同。
这里有点失落。有人能指出我正确的方向吗?
谢谢你们的关注。