当前位置:  编程技术>.net/c#/asp.net

c#动态调用Webservice的两种方法实例

    来源: 互联网  发布时间:2014-10-22

    本文导语:  方法一: 代码如下:Hashtable ht = new Hashtable();            ht.Add("a", "testhelloworld");            XmlDocument xx = WebServicesHelper.QuerySoapWebService("http://www./elab_mgmt/WorkflowSchemeTaskSerivce.asmx", "ATesting", ht);            string ss = xx....

方法一:

代码如下:

Hashtable ht = new Hashtable();
            ht.Add("a", "testhelloworld");
            XmlDocument xx = WebServicesHelper.QuerySoapWebService("http://www./elab_mgmt/WorkflowSchemeTaskSerivce.asmx", "ATesting", ht);
            string ss = xx.OuterXml;

代码如下:

///
        /// 通用WebService调用(Soap),参数Pars为String类型的参数名、参数值
        ///
        public static XmlDocument QuerySoapWebService(String URL, String MethodName, Hashtable Pars)
        {
            if (_xmlNamespaces.ContainsKey(URL))
            {
                return QuerySoapWebService(URL, MethodName, Pars, _xmlNamespaces[URL].ToString());
            }
            else
            {
                return QuerySoapWebService(URL, MethodName, Pars, GetNamespace(URL));
            }
        }

代码如下:

private static XmlDocument QuerySoapWebService(String URL, String MethodName, Hashtable Pars, string XmlNs)
        {
            _xmlNamespaces[URL] = XmlNs;//加入缓存,提高效率
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL);
            request.Method = "POST";
            request.ContentType = "text/xml; charset=utf-8";
            request.Headers.Add("SOAPAction", """ + XmlNs + (XmlNs.EndsWith("/") ? "" : "/") + MethodName + """);
            SetWebRequest(request);
            byte[] data = EncodeParsToSoap(Pars, XmlNs, MethodName);
            WriteRequestData(request, data);
            XmlDocument doc = new XmlDocument(), doc2 = new XmlDocument();
            doc = ReadXmlResponse(request.GetResponse());

            XmlNamespaceManager mgr = new XmlNamespaceManager(doc.NameTable);
            mgr.AddNamespace("soap", "http://schemas.xmlsoap.org/soap/envelope/");
            String RetXml = doc.SelectSingleNode("//soap:Body/*/*", mgr).InnerXml;
            doc2.LoadXml("" + RetXml + "");
            AddDelaration(doc2);
            return doc2;
        }

代码如下:

private static string GetNamespace(String URL)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL + "?WSDL");
            SetWebRequest(request);
            WebResponse response = request.GetResponse();
            StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(sr.ReadToEnd());
            sr.Close();
            return doc.SelectSingleNode("//@targetNamespace").Value;
        }

方法二:

通过SOAPUI直接取URL

代码如下:

string postData2="?";
            HttpHelper.GetResponseFormUrlAsync("http://www.xxx.com/testingservices.asmx?wsdl", postData2, "text/xml", true, new AsyncCallback(responseCallback));

代码如下:

}
        static void responseCallback(IAsyncResult ar)
        {
            HttpWebRequest req = ar.AsyncState as HttpWebRequest;
            if (req == null)
                return;
            try
            {
                HttpWebResponse response = req.EndGetResponse(ar) as HttpWebResponse;
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    response.Close();
                    LogHelper.Error("定时任务", "异步执行失败," + req.RequestUri.ToString() + "rnResponse状态代码为rn" + response.StatusCode.ToString());
                    return;
                }
                Stream responseStream = response.GetResponseStream();
                StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
                string ResponseStr = reader.ReadToEnd();
                responseStream.Close();
                LogHelper.Warn("定时任务", req.RequestUri.ToString() + "rn" + ResponseStr);
            }
            catch (Exception e)
            {
                LogHelper.Fatal("定时任务", req.RequestUri.ToString() + "rn执行失败", e);
            }
        }

    
 
 

您可能感兴趣的文章:

  • C#实现动态显示及动态移除图片方法
  • C#实现动态生成表格的方法
  • c# 动态添加非标准html控件的代码
  • C#中事件的动态调用实现方法
  • 使用 C# 动态编译代码和执行的代码
  • c# DataGridView动态添加新行的二个方法
  • c#动态加载卸载DLL的方法
  • C#在运行时动态创建类型的实现方法
  • c#动态编译执行对象方法示例 运用映射机制创建对象
  • c#动态改变webservice的url访问地址
  • C#中动态显示当前系统时间的实例方法
  • c# asp .net 动态创建sql数据库表的方法
  • c# 动态调用webservice的小例子
  • C#中DropdownList动态绑定的两种方法与实现代码
  • c#基础 动态打开,显示,保存,另存为 图片
  • C# 动态调用webService的方法介绍
  • 动态加载动态库问题--在线等 iis7站长之家
  • c#开发的程序安装时动态指定windows服务名称
  • C#动态创建组件、属性及事件方法详解
  • C# 中的动态创建组件(属性及事件)的实现思路及方法
  • 动态库调用动态库
  • 如何调用动态
  • linux下怎么设置调用的动态库的路径
  • 如何使用JAVA调用利用用VC写的已有的动态库
  • 请教:linux的驱动程序如何调用动态连接库?
  • 怎样动态调用.so文件中的类方法
  • 链接问题,调用动态库中函数时出错
  • 如何在AIX系统下编写动态库的调用程序
  • 请教在linux中如何动态的增加一个系统调用(模块中)
  • 动态链接库调用问题.
  • 如何在程序中动态的加载并且调用另一个编译好的函数?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 可执行程序加载动态库 和 动态库加载动态库 的动态库初始化的问题
  • Linux下c函数dlopen实现加载动态库so文件代码举例
  • linux动态链接库里全局变量和静态变量会导致动态库不可重入吗?
  • linux能否成为动态域名解析客户端的动态域名解析服务器?
  • 关于动态菜单项,注意,不是动态菜单(一定给分)
  • Linux下,怎么确定动态库的绝对位置(动态库里面确定)?
  • 为什么动态生成的图片,JSP不能动态的获得
  • 请问:能不能动态的运行时生成对象(动态定义对象), 要涉及到哪些技术, 反射,序列化...??
  • 动态加载动态库问题--在线等
  • 静态库,动态库,静态链接和动态链接
  • 程序发布的问题(动态连接库的问题)
  • JSP动态缓存 JimStoneCache
  • 怎么调试unix动态库.
  • 动态编译与静态编译驱动程式疑问?
  • 关于动态库的问题,谢谢!
  • linux动态路由问题
  • 内核与动态(共享)库
  • Linux 动态库,静态库的一些疑惑
  • 动态库中的变量(全局和自动变量)在什么地方存储,内存在什么位置分配?
  • 【急】动态库问题请教


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3