国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C# > 正文

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

2020-01-24 02:35:39
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

下面先說(shuō)說(shuō)WebClient 最主要的功能。

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

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

stati WebClient()public WebClient() 

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

OpenWrite 返回一個(gè)用于將數(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 的形式返回?cái)?shù)據(jù)。

了解了WebClient的知識(shí)后,我們開(kāi)始正式進(jìn)入正題。
通過(guò)Post方式發(fā)送數(shù)據(jù)可以避免Get方式的數(shù)據(jù)長(zhǎng)度限制,下面采用WebClient來(lái)實(shí)現(xiàn)這個(gè)功能。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"中包含如 "&","=","+"時(shí)需要使用,
HttpUtility.UrlEncode( "+++xxx為什么不編碼也可以",Encoding.GetEncoding("GB2312")) 進(jìn)行編碼
HttpUtility.UrlEncode(string) 默認(rèn)使用UTF-8進(jìn)行編碼,因此使用 UrlEncode編碼時(shí)并且字段里有中文,并且目標(biāo)網(wǎng)站使用GB2312時(shí),需要在UrlEncode函數(shù)中指明使用Gb2312
這樣上面的拼接代碼可以修改為如下:

postData.Append("formField1=" + HttpUtility.UrlEncode("表單數(shù)據(jù)一",Encoding.GetEncoding("GB2312")));postData.Append("&formField2=" + HttpUtility.UrlEncode("表單數(shù)據(jù)二",Encoding.GetEncoding("GB2312")));
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 洱源县| 红桥区| 芮城县| 孟津县| 镇巴县| 海原县| 炉霍县| 合川市| 鄂托克前旗| 双江| 阿勒泰市| 赤峰市| 正定县| 景泰县| 巴林左旗| 北京市| 鹤峰县| 伊金霍洛旗| 壤塘县| 武功县| 肇东市| 剑阁县| 库伦旗| 永清县| 遂昌县| 孟州市| 普宁市| 盐亭县| 长顺县| 三原县| 香格里拉县| 沽源县| 丁青县| 永春县| 乌兰县| 武定县| 玉环县| 江华| 福建省| 龙门县| 霍林郭勒市|