使用asp调用.net xml web services

(是不是实际上可以用这个办法调用任何xml web services呢?高人答一下) 最近在做一个web services,由我来写文档。为了方便广大asp用户也可以使用我们的服务,特意在网上搜了半天,发现大致有下面两个办法来通过asp调用.net xml web services。 1. 使用soap toolkit 3.0 2. 使用xmlhttp 我来写个总结,这样以后大家如果遇到这样的问题,如果用搜索搜到我的页面上,那立刻就可以实现自己的方案了。 1. 使用soap toolkit 3.0 如果网站建立在自己可以控制的服务器,则可选择安装soap toolkit 3.0来使用。soap toolkit是微软提供的web services解决方案。可以从下面的地址下载得到,它是免费的。 http://www.microsoft.com/downloads/details.aspx?familyid=c943c0dd-ceec-4088-9753-86f052ec8450&displaylang=en 下载后,安装即可。 Asp我也只是几年前写过,现在已经淡忘了,所以,下面只是把基本的相关操作写下来,再具体的例子,可以查看随soap toolkit一起安装的User Guide, 那里面有专门的示例。 基本流程为  ‘建立一个MSSOAP.SoapClient30对象。 Set sc = CreateObject("MSSOAP.SoapClient30") ‘设定ServerHTTPRequest为true。 sc.ClientProperty("ServerHTTPRequest") = True ‘调用mssoapinit方法来完成对web services的引用  sc.mssoapinit "http://192.168.10.199/WebService1/Service1.asmx?wsdl","","","" ‘开始调用web services提供的方法 msg=  sc.HelloIE("notus","kerry") msg接收返回值并进行下一步的处理.。我只测试了最基本的string类型,对其他复杂类型的接收,同样,请查看User Guide. mssoapinit接受4个参数。其中第一个为web services 的WSDL 地址。(The URL of the WSDL file that describes the services offered by the server or a string containing the WSDL document.)其他三个可选。 soap toolkit User Guide提供了更多的例子和详细的文档说明. 使用soap toolkit的好处很明显,就是可以方便的使用web services的各种方法,而且其本身也带有不错的支持.缺点当然也很明显,就是需要安装,就这一点,估计大部分人就不会用了.

2. 使用xmlhttp Set objHTTP = Server.CreateObject("MSXML2.XMLHTTP") '注意,这里不是指定wsdl地址,而是确定要使用的web services 方法 strWebserviceURL = "http://192.168.10.199/WebService1/Service1.asmx/HelloIE" '设置参数及其值,这里是比较麻烦的一点,最后构造的是一个类似于”msg1&msg2&msg3”的字符串. i="notus red" ac="loves" strRequest = "msg="+i+"&action="+ac objHTTP.Open "POST", strWebserviceURL, False '设置这个Content-Type很重要 objHTTP.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded" ‘发送数据到web sercices objHTTP.Send(strRequest) ‘接收返回的数据 Set xmlDOC =Server.CreateObject("MSXML.DOMDocument") bOK = xmlDOC.load(objHTTP.responseXML) ‘对数据进行处理 msg = xmlDOC.xml bOK如果为true,则表示成功接收到了返回的数据. 看到这里,大家也都明白了,这个其实就是直接post数据过去,然后再把返回数据取回来.貌似有点ajax的味道. 这个,据说是需要服务器端支持用post/get访问web services.也就是要在web.config中加入 <webServices> <protocols> <add name="HttpPost"/> <add name="HttpGet"/> </protocols> 这是一个通用的办法,不需要安装任何东西,可是比较麻烦.

具体这两种方法的效果如何,我这里还没有上线验证.但是我本地测试是可以的.过几天上线测试后,如果有问题出现,会在回来补充.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏丑胖侠

Zookeeper开源客户端Curator之基本功能讲解

简介 Curator是Netflix公司开源的一套Zookeeper客户端框架。了解过Zookeeper原生API都会清楚其复杂度。Curator帮助我们在其基...

3445
来自专栏blackpiglet

使用 pip 发布 Python 程序

写过 Python 程序的小伙伴们都知道,需要 import 个非 Python 自带的软件包时,都要用到 pip 这个程序。平时我们都是用 pip,如果我们写...

3362
来自专栏HappenLee的技术杂谈

C++雾中风景番外篇3:GDB与Valgrind ,调试代码内存的工具

CoreDump时一个二进制的文件,进程发生错误崩溃时,内核会产生一个瞬时的快照,记录该进程的内存、运行堆栈状态等信息保存在core文件之中。做个简单的类比,c...

912
来自专栏后端技术探索

nginx入门到入门

用户访问反向代理服务器。但是用户不知道访问的是反向代理服务器多个站点中的哪一个站点。对服务器服务。

882
来自专栏积累沉淀

Java程序员面试题集(86-115)

Java程序员面试题集(86-115) 摘要:下面的内容包括Struts 2和Hibernate的常见面试题,虽然Struts 2在2013年6月曝出高危漏...

2717
来自专栏淡定的博客

php之laravel学习常见错误1(连载中)

下面是我们整理的php的laravel学习的常见的错误以及解决的办法,我还会持续更新,请关注

2023
来自专栏人云亦云

Chef

3747
来自专栏owent

Redis全异步(HA)Driver设计稿

现在Redis的集群功能已经Release。但是并没有一个官方直接提供的高可用性的API可以使用。有的只有解决方案,Sentinel和Cluster。所以有必要...

1061
来自专栏技术博文

Linux操作系统PS命令详细解析

要对系统中进程进行监测控制,用 ps 命令满足你。 /bin/ps ps 是显示瞬间行程的状态,并不动态连续;如果想对进程运行时间监控,应该用 top 工具。 ...

3644
来自专栏北京马哥教育

文件和文件夹的个数是否对磁盘的IO有影响?

在linux和windows的亦或是其他操作系统的 文件系统 中,文件的个数、文件夹的个数、文件夹的层级数是否对磁盘的IO有影响?如果有,那么大概的阈值是多少?...

3246

扫码关注云+社区

领取腾讯云代金券