/// GetStream 获取网页流对象
/// </summary>
/// <param name="url">要获取的网页地址</param>
/// <param name="refer">来源网址</param>
/// <param name="timeout">请求超时时间</param>
/// <param name="encode">网页编码方式</param>
/// <param name="cookie">Cookie 对象</param>
/// <param name="myproxy">代理对象</param>
/// <param name="err">接收错误信息字符串</param>
/// <returns>网页流对象</returns>
public static Stream GetStream(string url, string refer, int timeout, Encoding encode, ref CookieContainer cookie, WebProxy myproxy, out string err)
{
Stream stream = null;
err = "";
try
{
HttpWebResponse response = null;
HttpWebRequest request = null;
//如果是发送HTTPS请求
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
request = WebRequest.Create(url) as HttpWebRequest;
}
else
{
request = (HttpWebRequest)WebRequest.Create(url);
}
HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
request.ProtocolVersion = HttpVersion.Version10;
if (cookie == null) cookie = new CookieContainer();
request.CookieContainer = cookie;
request.CachePolicy = noCachePolicy;
request.Proxy = myproxy;
request.KeepAlive = false;
request.ServicePoint.ConnectionLimit = int.MaxValue;
request.Accept = "text/html, application/xhtml+xml, */*";
request.Timeout = timeout;
request.Method = "GET";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 2.0.50727;)";
request.Referer = refer;
response = (HttpWebResponse)request.GetResponse();
cookie = request.CookieContainer;
stream = response.GetResponseStream();
return stream;
}
catch (Exception ex)
{
err = ex.Message;
return null;
}
}
//--------------------------------测试
CookieContainer cookie = new CookieContainer();
string err;
Stream stream = GetStream("http://www.liantu.com/tiaoma/eantitle.php?title=Zy9YSzJhWVJQU2ZZdGZ0Q2F1eWdIQ1dVNXp3VjNUS29vcFBYU2JhNWJlTWdMWE0yQnpwT1J3PT0=", "", 10000, Encoding.UTF8, ref cookie, null, out err);
try
{
Bitmap bmp = (Bitmap)Image.FromStream(stream);
SetTdCtl(linklab_result, VCode.GetVCode(bmp, 4), true, null);
SetTdCtl(pic_code, null, true, new Bitmap(bmp));
}
catch { SetTdCtl(linklab_result, "错误", true, null); }