我們目前涉及到的現有的接收請求方式有三種,
第一種:
頁面式的Form表單
第二種:
服務的webservice形式的xml
第三個:
restful風格的post包體json
第一種比較老,博客園的登錄就是這樣的。找了個例子
這里不做具體討論了。
例子
List<KeyValuePair<string, string>> paramList = new List<KeyValuePair<string, string>>(); HttpClient _client = new HttpClient(); async void DownloadPageAsync() { // Use static HttpClient to avoid exhausting system resources for network connections. var result = await _client.PostAsync(new Uri(url), new FormUrlEncodedContent(paramList)); // Write status code. Console.WriteLine("STATUS CODE: " + result.StatusCode); result.EnsureSuccessStatusCode(); string resultStr = await result.Content.ReadAsStringAsync(); Console.WriteLine(resultStr); } DownloadPageAsync();
第二種的,webservice的,之前的博客里有。
第三種,比較新的json的請求方式
針對這種,就只能用json字符串來提交了,具體代碼是
string url = getPRC_Url(serviceName, apiName, null); string body = "{"; //如果需要POST數據 if (!(parameters == null || parameters.Count == 0)) { StringBuilder buffer = new StringBuilder(); foreach (string key in parameters.Keys) { buffer.AppendFormat("\"{0}\":\"{1}\",", key, parameters[key]); } body += buffer.ToString() + "}"; } try { HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url); httpWebRequest.ContentType = "application/json"; httpWebRequest.Method = "POST"; httpWebRequest.Timeout = 20000; byte[] btBodys = Encoding.UTF8.GetBytes(body); httpWebRequest.ContentLength = btBodys.Length; httpWebRequest.GetRequestStream().Write(btBodys, 0, btBodys.Length); HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream()); string responseContent = streamReader.ReadToEnd(); return responseContent; } catch (Exception ex) { return null; }
主要是這個入參需要放在包體里,並且得是"{}"形式的方可。