HttpWebRequest 使用 WebProxy 错误
#region 获取网页源码 (返回String)
/// <summary>
/// 获取网页源码 (返回String)
/// </summary>
/// <param name="enCoding">编码格式</param>
/// <param name="url">目标URL</param>
/// <param name="webProxyIp">代理IP</param>
/// <param name="webProxyPort">代理端口</param>
/// <returns></returns>
public static string GetHtmlCode(Encoding enCoding, string url, string webProxyIp, int webProxyPort = 80)
{
try
{
string str;
HttpWebRequest webRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
/*开始*/
if (!string.IsNullOrEmpty(webProxyIp))
{
System.Net.WebProxy proxy = new WebProxy(webProxyIp, webProxyPort);
proxy.Credentials = CredentialCache.DefaultCredentials;
webRequest.Proxy = proxy;
}
/*结束*/
webRequest.Referer = "http://www.baidu.com";
webRequest.Timeout = 30000;
webRequest.Method = "GET";
webRequest.UserAgent = "Mozilla/4.0";
webRequest.Headers.Add("Accept-Encoding", "gzip, deflate");
HttpWebResponse webResponse = (System.Net.HttpWebResponse)webRequest.GetResponse();
if (webResponse.ContentEncoding.ToLower() == "gzip")//如果使用了GZip则先解压
{
using (Stream streamReceive = webResponse.GetResponseStream())
{
using (var zipStream =new GZipStream(streamReceive, CompressionMode.Decompress))
{
using (StreamReader sr = new System.IO.StreamReader(zipStream, enCoding))
{
str = sr.ReadToEnd();
}
}
}
}
else
{
using (Stream streamReceive = webResponse.GetResponseStream())
{
using (StreamReader sr = new StreamReader(streamReceive, enCoding))
{
str = sr.ReadToEnd();
}
}
}
return str;
}
catch(Exception ex)
{
return ex.Message + "_" + ex.InnerException;
}
}
#endregion
class Program
{
static void Main(string[] args)
{
//换过多个代理IP,都提示500错误
string str = WebHelper.GetHtmlCode(Encoding.UTF8, "http://www.baidu.com", "202.97.159.227");
//不使用代理 正常
str = WebHelper.GetHtmlCode(Encoding.UTF8, "http://www.baidu.com", null);
Console.WriteLine(str);
Console.ReadKey();
}
}
--------------------编程问答--------------------
竟然木有人
--------------------编程问答--------------------
我很想帮你 可是 我只是打酱油的。。。
--------------------编程问答--------------------
你确定你的代理可以用?
补充:.NET技术 , C#