using System; using System.Text; using System.Xml; using System.Net; using System.IO; namespace NewSouthernGridMiss { class WService { /// <summary> 获取字节数组</summary> /// <param name="XmlNs"></param> /// <param name="MethodName"></param> /// <returns></returns> private static byte[] EncodeParsToSoap( string XmlNs, string MethodName) { XmlNs = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + XmlNs.Replace("\0",""); XmlDocument doc = new XmlDocument(); doc.LoadXml(XmlNs); doc.Save(MissGlobal.TempPath + MethodName + ".xml"); //保存到本地途径和文件名 return Encoding.UTF8.GetBytes(doc.OuterXml); } public static XmlDocument QuerySoapWebService(string URL, string MethodName, string Xml) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL); request.Method = "POST"; request.ContentType = "text/xml; charset=UTF-8"; request.Credentials = CredentialCache.DefaultCredentials; request.Timeout = 20000; byte[] data = EncodeParsToSoap(Xml, MethodName); XmlDocument document = new XmlDocument(); try { request.ContentLength = data.Length; request.GetRequestStream().Write(data, 0, data.Length);//发送请求 WebResponse sd444 = request.GetResponse();//接收响应 document = ReadXmlResponse(request.GetResponse()); document.Save(MissGlobal.TempPath + MethodName + "_Return.xml");//把http响应的保存到本地 } catch (WebException exception) { if (exception.Response != null) { StreamReader sr = new StreamReader(((HttpWebResponse)exception.Response).GetResponseStream(), Encoding.UTF8); string ddd = sr.ReadToEnd(); document.LoadXml(ddd); document.Save(MissGlobal.TempPath + MethodName + "_Return.xml");//把http响应的保存到本地 throw new Exception(document.InnerText); } else { throw exception; } } return document; } private static XmlDocument ReadXmlResponse(WebResponse response) { StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); string xml = reader.ReadToEnd(); reader.Close(); XmlDocument document = new XmlDocument(); document.LoadXml(xml); return document; } } }