下面先說說WebClient 最主要的功能。
WebClient 構造函數
.Ctor 包括 一個空構造函數 和一個靜態構造函數, 靜態構造函數主要為UrlEncode 和UrlEncodeAndWirte 編碼提供參照byte[]數據的初始化作用。
stati WebClient()
public WebClient()
WebClient提供四種將數據上載到資源的方法:
WebClient還提供三種從資源下載數據的方法:
WebClient wc = new WebClient(); StringBuilder postData = new StringBuilder(); postData.Append("formField1=" + "表單數據一"); postData.Append("&formField2=" + "表單數據二"); postData.Append("&formField3=" + "表單數據三"); //下面是GB2312編碼 byte[] sendData = Encoding.GetEncoding("GB2312").GetBytes(postData.ToString()); wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); wc.Headers.Add("ContentLength", sendData.Length.ToString()); byte[] recData= wc.UploadData("http://www.domain.cn/services/DataImport1.asp","POST",sendData); //顯示返回值注意編碼 MessageBox.Show(Encoding.GetEncoding("GB2312").GetString(recData));
注意"表單數據x"中包含如 "&","=","+"時需要使用,
HttpUtility.UrlEncode( "+++xxx為什么不編碼也可以",Encoding.GetEncoding("GB2312")) 進行編碼
HttpUtility.UrlEncode(string) 默認使用UTF-8進行編碼,因此使用 UrlEncode編碼時并且字段里有中文,并且目標網站使用GB2312時,需要在UrlEncode函數中指明使用Gb2312
這樣上面的拼接代碼可以修改為如下:
postData.Append("formField1=" + HttpUtility.UrlEncode("表單數據一",Encoding.GetEncoding("GB2312")));
postData.Append("&formField2=" + HttpUtility.UrlEncode("表單數據二",Encoding.GetEncoding("GB2312")));
新聞熱點
疑難解答