SOAP简单示例
看了網上的幾個文章,SOAP的示例布局都不清晰,不能馬上入手,特意寫個例子與大家分享,同時記錄備用。
當前環境:VS2013 + WPF
private void Button_Click(object sender, RoutedEventArgs e){string url = "http://www.webxml.com.cn/WebServices/WeatherWS.asmx";string soap = SetSoapMessage();// 構造soap請求信息string result = GetSOAPReSource(url, soap);txtShow.Text = result.Replace(">", ">\n").Replace("<string>\n", "<string>");}#region 發起SOAP請求/// <summary>/// 發起SOAP請求/// </summary>/// <param name="url">URL</param>/// <param name="datastr">數據</param>/// <returns></returns>public static string GetSOAPReSource(string url, string datastr){//發起請求Uri uri = new Uri(url);WebRequest webRequest = WebRequest.Create(uri);webRequest.ContentType = "text/xml; charset=utf-8";webRequest.Method = "POST";using (Stream requestStream = webRequest.GetRequestStream()){byte[] paramBytes = Encoding.UTF8.GetBytes(datastr.ToString());requestStream.Write(paramBytes, 0, paramBytes.Length);}//響應WebResponse webResponse = webRequest.GetResponse();using (StreamReader myStreamReader = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8)){string result = "";return result = myStreamReader.ReadToEnd();}} #endregion#region 構造soap請求信息string SetSoapMessage(){string header = "";string body = "";string fault = "";body = "<getRegionCountry xmlns=\"http://WebXml.com.cn/\" />";return GetSoapMessageByBase(header, body, fault);} #endregion#region SOAP消息基本結構/// <summary>/// SOAP消息基本結構/// </summary>/// <param name="header">頭部(包含Header)</param>/// <param name="body">內容主體(包含Body)</param>/// <param name="fault">錯誤提示(包含Fault)</param>/// <returns></returns>string GetSoapMessageByBase(string header, string body, string fault){StringBuilder soap = new StringBuilder();soap.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");soap.Append("<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">");//添加頭部if (!string.IsNullOrWhiteSpace(header)){soap.Append("<soap:Header>");soap.Append(header);soap.Append("</soap:Header>");}//添加內容if (!string.IsNullOrWhiteSpace(body)){soap.Append("<soap:Body>");soap.Append(body);//添加錯誤if (!string.IsNullOrWhiteSpace(fault)){soap.Append("<soap:Fault>");soap.Append(fault);soap.Append("</soap:Fault>");}soap.Append("</soap:Body>");}soap.Append("</soap:Envelope>");return soap.ToString();} #endregion?
轉載于:https://www.cnblogs.com/xcsn/p/4383419.html
總結
- 上一篇: 【SICP练习】127 练习3.58
- 下一篇: html-----020----事件