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 } }
调用方式
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WebAPIClientDemo { class Program { static void Main(string[] args) { RestClient client = new RestClient("http://localhost:50168"); #region Get 方式请求列表 string str = client.Get("api/values"); Console.WriteLine(str); #endregion #region Get 方式请求id对应的数据 string strGetById = client.Get("api/values/2"); Console.WriteLine(strGetById); #endregion #region Post 方式 添加数据 string postUri = "api/values/"; string userJson = @"{""Id"":123,""Age"":12,""UserInfo"":""111""}"; string postResponse = client.Post(userJson, postUri); Console.WriteLine(postResponse); #endregion #region Delete string deleteUri = "api/values/3"; string deleteResponse = client.Delete(deleteUri); Console.WriteLine( deleteResponse); #endregion #region Put string putUri = "api/values/123"; string userJson3 = @"{""Id"":123,""Age"":12,""UserInfo"":""111""}"; string putResponse = client.Post(userJson3, putUri); Console.WriteLine(putResponse); #endregion Console.ReadKey(); } } }