調用第三方API的時候要用到HttpWebRequest類發送HTTP請求,網上查閱一番後大緻了解了該類的用法,現記錄如下。
首先引入HttpWebRequest類,System.IO類
using HttpWebRequest
using System.IO
GET請求
/// <summary>
/// 發送GET請求
/// </summary>
/// <param name="url">請求URL,如果需要傳參,在URL末尾加上“?+參數名=參數值”即可</param>
/// <returns></returns>
static string HttpGet(string url)
{
//建立
HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
//設定請求方法
httpWebRequest.Method = "GET";
//請求逾時時間
httpWebRequest.Timeout = 20000;
//發送請求
HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
//利用Stream流讀取傳回資料
StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream(), Encoding.UTF8);
//獲得最終資料,一般是json
string responseContent = streamReader.ReadToEnd();
streamReader.Close();
httpWebResponse.Close();
return responseContent;
}
POST請求
/// <summary>
/// 發送POST請求
/// </summary>
/// <param name="url">請求URL</param>
/// <param name="data">請求參數</param>
/// <returns></returns>
static string HttpPost(string url, string data)
{
HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
//字元串轉換為位元組碼
byte[] bs = Encoding.UTF8.GetBytes(data);
//參數類型,這裡是json類型
//還有别的類型如"application/x-www-form-urlencoded",不過我沒用過(逃
httpWebRequest.ContentType = "application/json";
//參數資料長度
httpWebRequest.ContentLength = bs.Length;
//設定請求類型
httpWebRequest.Method = "POST";
//設定逾時時間
httpWebRequest.Timeout = 20000;
//将參數寫入請求位址中
httpWebRequest.GetRequestStream().Write(bs, 0, bs.Length);
//發送請求
HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
//讀取傳回資料
StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream(), Encoding.UTF8);
string responseContent = streamReader.ReadToEnd();
streamReader.Close();
httpWebResponse.Close();
httpWebRequest.Abort();
return responseContent;
}
GET請求就很簡單易懂啦,如果需要傳參,在URL末尾加上“?+參數名=參數值”即可,需要注意的是POST請求。
POST請求參數類型有多個,設定不正确會發生錯誤的,一般第三方接口都是以JSON交換資料,按我上面那樣寫就沒錯了。請求中的參數設定涉及到了Stream流的一些知識點
httpWebRequest.GetRequestStream().Write(bs, 0, bs.Length);
這一行的意思是将“bs”從Request的“0”位置中開始寫入,長度為“bs.Length”,說白了就是把參數資料加入到請求資料中。