c# 發送web請求


我們目前涉及到的現有的接收請求方式有三種,

第一種:

頁面式的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;
}

主要是這個入參需要放在包體里,並且得是"{}"形式的方可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM