.NET如何呼叫REST介面?
首先咱們再對接之前需要先了解什麼是REST介面,又通過什麼請求,和以往的介面有什麼區別:
Rest,Representational State Transfer的縮寫,資源(資料)的表示(json、xml)+狀態轉化(http verb動作)
使用URL定位資源,用HTTP動詞(GET,POST,DELETE,DETC)描述操作。
用來規範客戶端如何在HTTP 層與 API 提供方進行資料互動 。
通俗的來講比如一個Uri為:( xxxxxx.cn/func/getdata);
這樣的一個Uri你看不出來他是什麼狀態的請求方式,是post?get?put?delete? 你不知道,但是這就是rest介面的特點,通過型別來區分相同uri的不同型別操作,顧名思義:使用ajax的時候根據type內的不同引數來完成不同的操作
基本的定位和概念清楚之後,我們來看看你如何在.net中實現這一操作,其實不難,以下是我個人的實現:
Rest介面地址:http://域名+埠號/xxxx/xxxx
介面引數字串: “{“requestname”:“xxxxx”, “function”:“xxxxxxx”}”;
/// <summary> /// POST提交REST介面 /// </summary> /// <param name="str">介面引數字串</param> /// <param name="url">介面地址</param> /// <returns></returns> public string rest(string str, string url) { Uri address = new Uri(url);///轉換為uri,加以標記 string ttt = "";///用來儲存返回結果 // 建立webrequest HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest; // Set type to POST request.Method = "POST";///方式可以為post,get,put,delete request.ContentType = "text/plain; charset=utf-8"; //"application/x-www-form-urlencoded";//內容編碼格式 request.Timeout = 180000; StringBuilder data = new StringBuilder(); data.Append(str);///追加介面引數字串 // 設定位元組陣列用來存放我們請求的引數 byte[] byteData = UTF8Encoding.UTF8.GetBytes(data.ToString()); // 設定請求頭的長度 request.ContentLength = byteData.Length; // 寫入待請求的引數 using (Stream postStream = request.GetRequestStream()) { postStream.Write(byteData, 0, byteData.Length); } try { // 獲取響應 using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) { // 獲取響應資料流 StreamReader reader = new StreamReader(response.GetResponseStream()); //把響應後的資料從頭讀取到尾 ttt = reader.ReadToEnd(); } return ttt;///返回呼叫 } catch (Exception e) { return e.Message;///丟擲錯誤資訊 throw; } }
以上就是個人程式碼實現的具體情況,這是封裝好的方法
有的同學可能注意到了我這個方法中吧url標記為url了,為什麼這麼做呢:
url表示在整個網路範圍內,你可以同通過這個url來找到我現在所處的位置,但是我想讓你找到我這個人,你不認識我,不知道我叫什麼,你肯定找不到我,所以這個時候我們需要一個命名或者說一種標記,來表明我的身份特徵,這個時候就用到了uri這個東西,url偏向於定位,而uri則用於標記或表明,所以,在webrequest中宣告一個帶標記的url則可以清楚地訪問到這個介面並進行對接
————————————————
版權宣告:本文為CSDN博主「Loyar」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結: