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

首頁 > 學院 > 開發設計 > 正文

在WebClient中使用post[發送數據]

2019-11-14 16:31:43
字體:
來源:轉載
供稿:網友
很多時候,我們需要使用C#中的WebClient 來收發數據,WebClient 類提供向 URI 標識的任何本地、Intranet 或 Internet 資源發送數據以及從這些資源接收數據的公共方法。

 

  下面先說說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")));


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安达市| 芜湖县| 集贤县| 屯昌县| 军事| 义马市| 日照市| 昌吉市| 萝北县| 仁怀市| 青岛市| 会宁县| 金川县| 千阳县| 六盘水市| 西乌| 景宁| 阿鲁科尔沁旗| 尚志市| 乐清市| 吉安县| 潍坊市| 桐梓县| 阿拉善右旗| 迭部县| 白山市| 金华市| 盐亭县| 洛隆县| 五莲县| 阳信县| 高尔夫| 高州市| 易门县| 临泽县| 黎川县| 珠海市| 同江市| 郎溪县| 田阳县| 信丰县|