using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Web; namespace WebApplication1 { public class RestClient { private string BaseUri; public RestClient(string baseUri) { this.BaseUri = baseUri; } #region Get請求 public string Get(string uri) { //先根據用戶請求的uri構造請求地址 string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri); //創建Web訪問對 象 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); //通過Web訪問對象獲取響應內容 HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); //通過響應內容流創建StreamReader對象,因為StreamReader更高級更快 StreamReader reader = new StreamReader(myResponse.GetResponseStream(),Encoding.UTF8); //string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有編碼問題就用這個方法 string returnXml = reader.ReadToEnd();//利用StreamReader就可以從響應內容從頭讀到尾 reader.Close(); myResponse.Close(); return returnXml; } #endregion #region Post請求 public string Post(string data, string uri) { //先根據用戶請求的uri構造請求地址 string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri); //創建Web訪問對象 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); //把用戶傳過來的數據轉成“UTF-8”的字節流 byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data); myRequest.Method = "POST"; myRequest.ContentLength = buf.Length; myRequest.ContentType = "application/json"; myRequest.MaximumAutomaticRedirections = 1; myRequest.AllowAutoRedirect = true; //發送請求 Stream stream = myRequest.GetRequestStream(); stream.Write(buf,0,buf.Length); stream.Close(); //獲取接口返回值 //通過Web訪問對象獲取響應內容 HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); //通過響應內容流創建StreamReader對象,因為StreamReader更高級更快 StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); //string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有編碼問題就用這個方法 string returnXml = reader.ReadToEnd();//利用StreamReader就可以從響應內容從頭讀到尾 reader.Close(); myResponse.Close(); return returnXml; } #endregion #region Put請求 public string Put(string data, string uri) { //先根據用戶請求的uri構造請求地址 string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri); //創建Web訪問對象 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); //把用戶傳過來的數據轉成“UTF-8”的字節流 byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data); myRequest.Method = "PUT"; myRequest.ContentLength = buf.Length; myRequest.ContentType = "application/json"; myRequest.MaximumAutomaticRedirections = 1; myRequest.AllowAutoRedirect = true; //發送請求 Stream stream = myRequest.GetRequestStream(); stream.Write(buf, 0, buf.Length); stream.Close(); //獲取接口返回值 //通過Web訪問對象獲取響應內容 HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); //通過響應內容流創建StreamReader對象,因為StreamReader更高級更快 StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); //string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有編碼問題就用這個方法 string returnXml = reader.ReadToEnd();//利用StreamReader就可以從響應內容從頭讀到尾 reader.Close(); myResponse.Close(); return returnXml; } #endregion #region Delete請求 public string Delete(string data, string uri) { //先根據用戶請求的uri構造請求地址 string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri); //創建Web訪問對象 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); //把用戶傳過來的數據轉成“UTF-8”的字節流 byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data); myRequest.Method = "DELETE"; myRequest.ContentLength = buf.Length; myRequest.ContentType = "application/json"; myRequest.MaximumAutomaticRedirections = 1; myRequest.AllowAutoRedirect = true; //發送請求 Stream stream = myRequest.GetRequestStream(); stream.Write(buf, 0, buf.Length); stream.Close(); //獲取接口返回值 //通過Web訪問對象獲取響應內容 HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); //通過響應內容流創建StreamReader對象,因為StreamReader更高級更快 StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); //string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有編碼問題就用這個方法 string returnXml = reader.ReadToEnd();//利用StreamReader就可以從響應內容從頭讀到尾 reader.Close(); myResponse.Close(); return returnXml; } #endregion } }