撷取指定网址中的资料-Part1:WebClinet 的用法

咳~这是这里第一篇PO文,我们先来说说简单点的东西。首先,先来看一下MSDN上对于WebClinet的叙述是什么:

[提供从URI所识别的资源中,传送与接收资料的常见方法。]

好的,那我们要怎么去使用这个类(Class)呢?废话有点多,我们来看范例程式码

1 // declare a object.
2 WebClient client = new WebClient();
3 
4 // Load data into memoryStream. Sample is yahoo stock
5 MemoryStream ms = new MemoryStream(client.DownloadData(string.Format("http://tw.stock.yahoo.com/q/q?s={0}",companyID)));

接下来只要把ms转换成你想要的资料格式即可,非常的简单。

但有些时候,可能会遇到有关于Proxy权限验证的问题。 (何谓Proxy,请查询Wiki)

所以说我们必须提供Proxy一些验证的参数,让我们写的这只程式可以顺利的通过Proxy权限验证。

来看范例程式码

 1 WebClient client = new WebClient();
 2 
 3 // Method_1: Get proxy configured with the Internet Explorer settings of the currently impersonated user.
 4 IWebProxy Proxya = System.Net.WebRequest.GetSystemWebProxy();
 5 // 设定可以通过该代理权限的名称,密码,域
 6 Proxya.Credentials = new NetworkCredential(ProxyUserName, ProxyPassword, ProxyDomain);
 7 
 8 // to get default proxy settings
 9 //Proxya.Credentials = CredentialCache.DefaultNetworkCredentials;
10 
11 client.Proxy = Proxya;
12 
13 MemoryStream ms = new MemoryStream(client.DownloadData(string.Format("http://tw.stock.yahoo.com/q/q?s={0}",companyID)));

(Line.6)和(Line.8)的程式码是可以互换的。一个是设定代理的权限(Line.6);另一个是去抓电脑本身的预设值(Line.8)。

 

在第四行(Line. 4)中。

IWebProxy Proxya = System.Net.WebRequest.GetSystemWebProxy();

可以改成

IWebProxy Proxya = new WebProxy("Proxy_Server_address:port");

这样会更好,因为这种写法可以去避免掉当工具换到另一台机器跑的时候,抓取到的IE设定不同导致工具Crash。

 

 

 

posted @ 2012-12-05 18:54  阿練醬  阅读(325)  评论(0编辑  收藏  举报