C# HttpWebRequest 发送SOAP XML(转)
调用webservice的几种方法:
方法一:添加web引用(简单/方便 局限客户端是.net)
方法二:Post xml(本文重点讲述)
方法三:使用微软MSXML2组件(好像在window server2008上就不支持)
方法四:在页面上添加form post到服务端
static void Main(string[] args) { string url = "服务地址"; Uri uri = new Uri(url); WebRequest webRequest = WebRequest.Create(uri); webRequest.ContentType = "text/xml"; webRequest.Method = "POST"; StringBuilder soap = new StringBuilder(); soap.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); soap.Append(@"<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>"); soap.Append("<soap:Body>"); soap.Append("<Request xmlns=\'http://tempuri.org/'>"); soap.Append("<requestXml>"); string requestBody = @"<TestRequest> <***> </TestRequest>"; soap.Append(requestBody); soap.Append("</requestXml>"); soap.Append("</Request>"); soap.Append("</soap:Body>"); soap.Append("</soap:Envelope>"); byte[] bytes = Encoding.UTF8.GetBytes(soap.ToString()); Stream writer = webRequest.GetRequestStream(); writer.Write(bytes, 0, bytes.Length); writer.Flush(); writer.Close(); string result = ""; try { HttpWebResponse hwRes = webRequest.GetResponse() as HttpWebResponse; if (hwRes.StatusCode == System.Net.HttpStatusCode.OK) {//是否返回成功 Stream rStream = hwRes.GetResponseStream(); //流读取 StreamReader sr = new StreamReader(rStream, Encoding.UTF8); result = sr.ReadToEnd(); sr.Close(); rStream.Close(); } else { result = "连接错误"; } //关闭 hwRes.Close(); Console.WriteLine(result); } catch (System.Net.WebException ex) { String responseFromServer = ex.Message.ToString() + " "; if (ex.Response != null) { using (WebResponse response = ex.Response) { Stream data = response.GetResponseStream(); using (StreamReader reader = new StreamReader(data)) { responseFromServer += reader.ReadToEnd(); } } } Console.WriteLine(responseFromServer); } Console.ReadKey(); }
参考:http://www.cnblogs.com/zhxhdean/archive/2012/06/12/2546277.html

浙公网安备 33010602011771号