首先是post請求的調用,調用對方的接口首先要得到對方的url,和需要傳入的參數,下面是一個簡單的post請求
WebClient client = new WebClient(); client.Headers.Add("Content-Type", "application/json"); Encoding enc = Encoding.GetEncoding("UTF-8"); //通過json的方式傳遞數據 var datajson = new JavaScriptSerializer().Serialize( new { serviceId = "3c.park.queryparkplacelist", requestType = "DATA", attributes = new { parkCode = "g3v3_1", placeType = "SALE", areaName = "A區", floor = "2", status = 1, pageSize = 10, pageIndex = 1 } }); //調用post方法進行請求,用result來接收返回的數據 var result = Post(URL, datajson);
下面是請求的具體方法
/// <summary> /// post請求 /// </summary> /// <param name="url"></param> /// <param name="json_param">參數</param> /// <param name="sign">md5加密</param> /// <returns></returns> public static string Post(string url, string json_param, string sign = "") { int timeoutSeconds = 0; WebProxy proxy = null; string contentType = "application/json;charset=UTF-8"; Encoding encoding = Encoding.GetEncoding("UTF-8"); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); if (proxy != null) request.Proxy = proxy; if (timeoutSeconds > 0) { request.Timeout = 0x3e8 * timeoutSeconds; } if (sign != "") { request.Headers["sign"] = sign; } request.Method = "POST"; request.AllowAutoRedirect = true; request.ContentType = contentType; request.ServicePoint.Expect100Continue = false; byte[] bytes = encoding.GetBytes(json_param); using (Stream requestStream = request.GetRequestStream()) { requestStream.Write(bytes, 0, bytes.Length); requestStream.Close(); } HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream(), encoding); return reader.ReadToEnd(); }
之后我們可以將接收到的數據進行解析,解析有多種方式,下面以json字符串的格式為例
//首先要創建此實例 JavaScriptSerializer js = new JavaScriptSerializer(); //然后通過此方法解析出返回的實體類 ——需要事先創建好實體類來進行接收,具體的參數根據返回值確定無需進行其他操作 OutParkModel Model = js.Deserialize<OutParkModel>(postContent);
