最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中在WebClient中使用post發(fā)送數(shù)據(jù)實現(xiàn)方法

 更新時間:2014年08月06日 10:41:06   投稿:shichen2014  
這篇文章主要介紹了C#中在WebClient中使用post發(fā)送數(shù)據(jù)實現(xiàn)方法,需要的朋友可以參考下

很多時候,我們需要使用C#中的WebClient 來收發(fā)數(shù)據(jù),WebClient 類提供向 URI 標識的任何本地、Intranet 或 Internet 資源發(fā)送數(shù)據(jù)以及從這些資源接收數(shù)據(jù)的公共方法。本文就較為詳細的說明了WebClient中使用post發(fā)送數(shù)據(jù)實現(xiàn)方法。

下面先說說WebClient 最主要的功能。

WebClient 構(gòu)造函數(shù)

.Ctor 包括 一個空構(gòu)造函數(shù) 和一個靜態(tài)構(gòu)造函數(shù), 靜態(tài)構(gòu)造函數(shù)主要為UrlEncode 和UrlEncodeAndWirte 編碼提供參照byte[]數(shù)據(jù)的初始化作用。如下所示:

stati WebClient()

public WebClient() 

WebClient提供四種將數(shù)據(jù)上載到資源的方法:

OpenWrite 返回一個用于將數(shù)據(jù)發(fā)送到資源的 Stream。
UploadData 將字節(jié)數(shù)組發(fā)送到資源并返回包含任何響應(yīng)的字節(jié)數(shù)組。
UploadFile 將本地文件發(fā)送到資源并返回包含任何響應(yīng)的字節(jié)數(shù)組。
UploadValues 將NameValueCollection 發(fā)送到資源并返回包含任何響應(yīng)的字節(jié)數(shù)組。

WebClient還提供三種從資源下載數(shù)據(jù)的方法:

DownloadData 從資源下載數(shù)據(jù)并返回字節(jié)數(shù)組。
DownloadFile 從資源將數(shù)據(jù)下載到本地文件。
OpenRead 從資源以 Stream 的形式返回數(shù)據(jù)。

了解了WebClient的知識后,我們開始正式進入正題。
通過Post方式發(fā)送數(shù)據(jù)可以避免Get方式的數(shù)據(jù)長度限制,下面采用WebClient來實現(xiàn)這個功能。Web服務(wù)端可以是任何CGI但是要搞清楚Web端接受的編碼,代碼如下:

WebClient wc = new WebClient();
StringBuilder postData = new StringBuilder();
postData.Append("formField1=" + "表單數(shù)據(jù)一");
postData.Append("&formField2=" + "表單數(shù)據(jù)二");
postData.Append("&formField3=" + "表單數(shù)據(jù)三");
//下面是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));

注意"表單數(shù)據(jù)x"中包含如 "&","=","+"時需要使用,
HttpUtility.UrlEncode( "+++xxx為什么不編碼也可以",Encoding.GetEncoding("GB2312")) 進行編碼
HttpUtility.UrlEncode(string) 默認使用UTF-8進行編碼,因此使用 UrlEncode編碼時并且字段里有中文,并且目標網(wǎng)站使用GB2312時,需要在UrlEncode函數(shù)中指明使用Gb2312
這樣上面的拼接代碼可以修改為如下:

postData.Append("formField1=" + HttpUtility.UrlEncode("表單數(shù)據(jù)一",Encoding.GetEncoding("GB2312")));
postData.Append("&formField2=" + HttpUtility.UrlEncode("表單數(shù)據(jù)二",Encoding.GetEncoding("GB2312")));

相關(guān)文章

最新評論

泗洪县| 来凤县| 荃湾区| 鄂托克前旗| 吴桥县| 鄂尔多斯市| 永州市| 肥城市| 卢氏县| 侯马市| 白河县| 裕民县| 大余县| 东港市| 盈江县| 泰和县| 澄城县| 茶陵县| 西城区| 保靖县| 繁峙县| 安多县| 明溪县| 西乡县| 凤台县| 黄平县| 滦南县| 博白县| 深水埗区| 沂南县| 金昌市| 阿拉善右旗| 札达县| 青浦区| 金堂县| 焉耆| 通河县| 东源县| 安龙县| 米脂县| 佛学|