WINFROM获取网页上的图像流数据
2014-03-27 14:59
127 查看
/// <summary>
/// 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); }
/// 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); }
相关文章推荐
- IOS 获取UIWebView加载网页的上的数据实例
- C++/MFC/GDI+——获取Graphics中的图像数据
- 用CxImage将从摄像头获取的图像原始数据转成JPG
- [Android 中级] AsyncTask 网页数据获取并显示进程
- WebClient HttpWebRequest从网页中获取请求数据
- 从php获取json数据使用js读取显示到网页笔记
- Android中获取网页表单中的数据实现思路及代码
- 获取一个网页数据返回的编码类型是gzip,解压后,网页中包含的中文字段变成了乱码,只需要把编码更改为BIG5 ,繁体字就正常显示了!
- H5网页端直接打开APP并获取传递数据的方案.
- Halcon vc学习1-图像数据获取、加载
- BitmapData探究1-获取Image组件的图像数据
- 利用JavaScript从UIWebView获取、修改、提交网页内数据的方法
- Intel RealSense学习之图像及图像深度数据获取
- Camera2.0新API下获取预览图像数据 (获取TextureView中图像)
- 小技巧:用CxImage将从摄像头获取的图像原始数据转成JPG,然后通过DDS发送出去
- Android实战:手把手实现“捧腹网”APP(一)-----捧腹网网页分析、数据获取
- java抓取网页数据获取网页中所有的链接实例分享
- 一般方式和ajax方式从后台获取数据加载进网页
- MATLAB获取“非免驱的相机或者摄像头”的图像数据
- 获取RGB图像的单个点的数据-视频处理基础(1)