咳~这是这里第一篇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。