C# 實現HTTP的POST(完整可執行並且通過測試的程式碼)
阿新 • • 發佈:2019-01-05
我是通過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();