1. 程式人生 > >C# 實現HTTP的POST(完整可執行並且通過測試的程式碼)

C# 實現HTTP的POST(完整可執行並且通過測試的程式碼)

我是通過VS2010 ,新建一個winform窗體專案,然後寫了一個測試軟體,軟體裡最後通過HTTP的POST把測試結果資料上傳到一個網頁系統裡,我們之間的協議很簡單:
C#這邊就是標準的POST傳送格式(網頁系統伺服器地址+埠號+具體路徑+一個問號+資料欄位名=資料值 +&+資料欄位名=資料值………)
這裡寫圖片描述

網頁系統那邊返回jason格式物件(左大括號{ + 雙引號裡欄位名 + 引號 + 雙引號裡欄位值…………)
這裡寫圖片描述

直接開啟瀏覽器,在位址列裡輸入HTTP Post要傳送給網頁系統的資料,也可以執行的

標頭檔案
using System.Net.Http;
using System.Net
; Encoding myEncoding = Encoding.GetEncoding("gb2312"); //選擇編碼字符集 string data = "sn=" + _uScanCode + "&lanMac=" + _sRecieveLanMac + "&wifiMac=" + _sRecieveWifi2Mac + "&testUserName=" + sTestUser + "&testDateTime=" + sTimeStr; //要上傳到網頁系統裡的資料(欄位名=數值 ,用&符號連線起來)
byte[] bytesToPost = System.Text.Encoding.Default.GetBytes(data); //轉換為bytes資料 string responseResult = String.Empty; HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create("http://192.168.60.59:81/rpc/snBurn/insertBySN"); //建立一個有效的httprequest請求,地址和埠和指定路徑必須要和網頁系統工程師確認正確,不然一直通訊不成功
req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded;charset=gb2312"; req.ContentLength = bytesToPost.Length; using (Stream reqStream = req.GetRequestStream()) { reqStream.Write(bytesToPost, 0, bytesToPost.Length); //把要上傳網頁系統的資料通過post傳送 } HttpWebResponse cnblogsRespone = (HttpWebResponse)req.GetResponse(); if (cnblogsRespone != null && cnblogsRespone.StatusCode == HttpStatusCode.OK) { StreamReader sr; using (sr = new StreamReader(cnblogsRespone.GetResponseStream())) { responseResult = sr.ReadToEnd(); //網頁系統的json格式的返回值,在responseResult裡,具體內容就是網頁系統負責工程師跟你協議號的返回值協議內容 } sr.Close(); } cnblogsRespone.Close();