using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Runtime.Serialization.Json; using System.Text; using System.Threading.Tasks; using System.Xml; namespace Pms.WebHandle { /// /// http直接访问rest服务 /// 通过URI执行,get/post/put/delete方法 /// put暂停使用 /// public class RestRequestHelper { /// /// 构造函数 /// /// public RestRequestHelper(string baseUri) { this.BaseUri = baseUri; } /// /// 基地址 /// private string BaseUri; /// /// Post调用 /// /// /// /// public string Post(string data, string uri) { //Web访问对象 string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri); HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); //转成网络流 byte[] buf = Encoding.UTF8.GetBytes(data); //设置 myRequest.Method = "POST"; myRequest.ContentLength = buf.Length; myRequest.ContentType = "text/plain"; // 发送请求 using (Stream newStream = myRequest.GetRequestStream()) { newStream.Write(buf, 0, buf.Length); newStream.Close(); } // 获得接口返回值 using (HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse()) { using (StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8)) { return reader.ReadToEnd(); } } } /// /// Post调用 /// /// /// /// public string PostWithWholeURI(string data, string wholeURI,bool wmsRequest=false) { //Web访问对象 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(wholeURI); //转成网络流 byte[] buf = Encoding.UTF8.GetBytes(data); //设置 myRequest.Method = "POST"; myRequest.ContentLength = buf.Length; myRequest.ContentType = "application/json ";//text/plain if(wmsRequest) { myRequest.Headers.Add("Client", "WebService"); myRequest.Headers.Add("Account", "AGVS"); myRequest.Headers.Add("PassWord", "AGVS**a375"); } //HttpRequestHeader httpRequestHeader = new HttpRequestHeader(); // 发送请求 using (Stream newStream = myRequest.GetRequestStream()) { newStream.Write(buf, 0, buf.Length); newStream.Close(); } // 获得接口返回值 using (HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse()) { using (StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8)) { //return HttpUtility.HtmlDecode(reader.ReadToEnd()); return reader.ReadToEnd(); } } } /// /// Get调用 /// /// /// public string Get(string uri) { //Web访问对象 string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri); HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); // 获得接口返回值 using (HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse()) { using (StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8)) { return reader.ReadToEnd(); } } } public string invokeHttpRequest(string strURL) { try { //执行HTTP请求 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strURL); request.Timeout = 10000; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); //获得返回数据 StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);//Encoding.GetEncoding("GBK") XmlDocument doc = new XmlDocument(); doc.LoadXml(reader.ReadToEnd()); reader.Close(); return doc.DocumentElement.InnerText; } catch { throw; } } /// /// Put调用 /// /// /// /// public string Put(string uri) { //Web访问对象 string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri); HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); myRequest.Method = "PUT"; //转成网络流 byte[] buf = Encoding.UTF8.GetBytes(""); myRequest.ContentLength = buf.Length; myRequest.ContentType = "text/plain"; // 获得接口返回值 using (HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse()) { using (StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8)) { return reader.ReadToEnd(); } } } /// /// Delete调用 /// /// /// /// public string Delete(string uri) { //Web访问对象 string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri); HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); myRequest.Method = "DELETE"; // 获得接口返回值 using (HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse()) { using (StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8)) { return reader.ReadToEnd(); } } } } /// /// 对象 <----> json串相互转换 /// 1、对象必须为public属性 /// 2、仅public成员正常转换,非public成员值由系统分配 /// public class JsonHelper { /// /// 生成json /// /// /// /// public static string ConvertToJson(System.Type type, object node) { DataContractJsonSerializer js = new DataContractJsonSerializer(type); using (var stream = new System.IO.MemoryStream()) { js.WriteObject(stream, node); string str = Encoding.UTF8.GetString(stream.ToArray()); //Encoding.GetEncoding("GBK").GetString(stream.ToArray()); return str; } } /// /// 解析对象 /// /// /// /// public static object ConvertToObject(System.Type type, string jsonString) { //jsonString.Trim('\0',' '); DataContractJsonSerializer js = new DataContractJsonSerializer(type); using (var s = new System.IO.MemoryStream(Encoding.UTF8.GetBytes(jsonString)))//Encoding.GetEncoding("GBK").GetBytes(jsonString) { return js.ReadObject(s); } } /// /// 解析对象 /// /// /// /// public static object ConvertToObject(System.Type type, System.IO.Stream jsonStream) { using (StreamReader sr = new StreamReader(jsonStream)) { DataContractJsonSerializer js = new DataContractJsonSerializer(type); var s = new System.IO.MemoryStream(Encoding.UTF8.GetBytes(sr.ReadToEnd())); return js.ReadObject(s); }//end sr } } }