C#中在WebClient中應用post發送數據完成辦法。本站提示廣大學習愛好者:(C#中在WebClient中應用post發送數據完成辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C#中在WebClient中應用post發送數據完成辦法正文
許多時刻,我們須要應用C#中的WebClient 來收發數據,WebClient 類供給向 URI 標識的任何當地、Intranet 或 Internet 資本發送數據和從這些資本吸收數據的公共辦法。本文就較為具體的解釋了WebClient中應用post發送數據完成辦法。
上面先說說WebClient 最重要的功效。
WebClient 結構函數
.Ctor 包含 一個空結構函數 和一個靜態結構函數, 靜態結構函數重要為UrlEncode 和UrlEncodeAndWirte 編碼供給參照byte[]數據的初始化感化。以下所示:
stati WebClient() public WebClient()
WebClient供給四種將數據上載到資本的辦法:
OpenWrite 前往一個用於將數據發送到資本的 Stream。
UploadData 將字節數組發送到資本並前往包括任何呼應的字節數組。
UploadFile 將當地文件發送到資本並前往包括任何呼應的字節數組。
UploadValues 將NameValueCollection 發送到資本並前往包括任何呼應的字節數組。
WebClient還供給三種從資本下載數據的辦法:
DownloadData 從資本下載數據並前往字節數組。
DownloadFile 從資本將數據下載到當地文件。
OpenRead 從資本以 Stream 的情勢前往數據。
懂得了WebClient的常識後,我們開端正式進入正題。
經由過程Post方法發送數據可以免Get方法的數據長度限制,上面采取WebClient來完成這個功效。Web辦事端可所以任何CGI然則要弄清晰Web端接收的編碼,代碼以下:
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")));