WebService的访问形式主要有:SOAP调用、XMLHTTP POST、GET调用、MicroSoft.XMLDOMC调用、webbehavior.htc调用
我们知道的在C#后台本地调用Webservice最简单、快捷的调用WebService的方法即通过鼠标手动添加web服务引用的方式。实际操作中我们会使用到另外一种方式,即通过HttpWebRequest构造请求。这种方式下以Post和Get两种请求为主,另外还有通用方式调用。一共三种。下面我们来看实际操作的实现方法。
由于这三种方式在实现原理上是相似的。只是具体的方式不同(哈哈,我的表述不是很专业,能理解是怎么回事就行)。于是我们抽象出公共的基类:WebServiceCaller
/// <summary> /// 访问webservice基类 /// </summary> public abstract class WebServiceCaller { /// <summary> /// 请求WebService /// </summary> /// <param name="URL">WebService的路径</param> /// <param name="MethodName">方法名</param> /// <param name="Pars">参数</param> /// <returns></returns> abstract public System.Xml.XmlDocument RequestWebService(ResquestParams rp); /// <summary> /// 设置凭证与超时时间 /// </summary> /// <param name="request"></param> public static void SetWebRequest(HttpWebRequest request) { request.Credentials = CredentialCache.DefaultCredentials; request.Timeout = 10000; } /// <summary> /// 读取响应输出流 /// </summary> /// <param name="response"></param> /// <returns></returns> public static XmlDocument ReadXmlResponse(WebResponse response) { StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8); String retXml = sr.ReadToEnd(); sr.Close(); XmlDocument doc = new XmlDocument(); doc.LoadXml(retXml); return doc; } public static String ParsToString(Hashtable Pars) { StringBuilder sb = new StringBuilder(); foreach (string k in Pars.Keys) { if (sb.Length > 0) { sb.Append("&"); } sb.Append(HttpUtility.UrlEncode(k) + "=" + HttpUtility.UrlEncode(Pars[k].ToString())); } return sb.ToString(); } }