using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.IO; using System.Web; namespace WebAPIClientDemo { public class RestClient { private string BaseUri; public RestClient(string baseUri) { this.BaseUri = baseUri; } #region Delete方式 public string Delete(string data, string uri) { return CommonHttpRequest(data, uri, "DELETE"); } public string Delete(string uri) { //Web訪問對象64 string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri); HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); myRequest.Method = "DELETE"; // 獲得接口返回值68 HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); //string ReturnXml = HttpUtility.UrlDecode(reader.ReadToEnd()); string ReturnXml = reader.ReadToEnd(); reader.Close(); myResponse.Close(); return ReturnXml; } #endregion #region Put方式 public string Put(string data, string uri) { return CommonHttpRequest(data, uri, "PUT"); } #endregion #region POST方式實現 public string Post(string data, string uri) { return CommonHttpRequest(data,uri,"POST"); } public string CommonHttpRequest(string data, string uri,string type) { //Web訪問對象,構造請求的url地址 string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri); //構造http請求的對象 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); //轉成網絡流 byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data); //設置 myRequest.Method = type; myRequest.ContentLength = buf.Length; myRequest.ContentType = "application/json"; myRequest.MaximumAutomaticRedirections = 1; myRequest.AllowAutoRedirect = true; // 發送請求 Stream newStream = myRequest.GetRequestStream(); newStream.Write(buf, 0, buf.Length); newStream.Close(); // 獲得接口返回值 HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); string ReturnXml = reader.ReadToEnd(); reader.Close(); myResponse.Close(); return ReturnXml; } #endregion #region GET方式實現 public string Get(string uri) { //Web訪問對象64 string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri); //構造一個Web請求的對象 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); // 獲得接口返回值68 //獲取web請求的響應的內容 HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); //通過響應流構造一個StreamReader StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); //string ReturnXml = HttpUtility.UrlDecode(reader.ReadToEnd()); string ReturnXml = reader.ReadToEnd(); reader.Close(); myResponse.Close(); return ReturnXml; } #endregion } } //調用代碼demo string serviceUrl = "http://localhost:44540/"; RestClient client = new RestClient(serviceUrl); string data = @"{""UserName"":""1111"",""Age"":123,""Id"":133}"; string uriPost = "api/values/3"; string retPost = client.Put(data, uriPost);