asp调用.net xml web services
来源:http://www.cnblogs.com/notus/archive/2006/08/10/473000.html#2662503
(是不是实际上可以用这个办法调用任何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>
这是一个通用的办法,不需要安装任何东西,可是比较麻烦.
具体这两种方法的效果如何,我这里还没有上线验证.但是我本地测试是可以的.过几天上线测试后,如果有问题出现,会在回来补充.
asp调用.net xml web services的更多相关文章
- BizTalk调用WS-Security的web services
最近做个项目,biztalk跟OTM(Oracle Transportation Management)系统做对接,双方通过web services通讯,这部分是BizTalk调用OTM的web se ...
- asp.net Ajax和web services
新建一个web服务 using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...
- Web Services调用存储过程简单实例
转:http://www.cnblogs.com/jasenkin/archive/2010/03/02/1676634.html Web Services 主要利用 HTTP 和 SOAP 协议使商 ...
- oracle直接调用web services
oracle调用C#开发web services 1, 去oracle官网上下载dbws-callout-utility-10131.zip 地址:https://oracle-base.com/a ...
- 跟我一起学WCF(3)——利用Web Services开发分布式应用
一.引言 在前面文章中分别介绍了MSMQ和.NET Remoting技术,今天继续分享.NET 平台下另一种分布式技术——Web Services 二.Web Services 详细介绍 2.1 We ...
- 用C#通过反射实现动态调用WebService 告别Web引用
我们都知道,调用WebService可以在工程中对WebService地址进行WEB引用,但是这确实很不方便.我想能够利用配置文件灵活调用WebService.如何实现呢? 用C#通过反射实现动态调用 ...
- 构建安全的Xml Web Service系列之如何察看SoapMessage
原文:构建安全的Xml Web Service系列之如何察看SoapMessage 上一篇文章地址:构建安全的Xml Web Service系列一之初探使用Soap头 (5-22 12:53) ...
- 用C#通过反射实现动态调用WebService 告别Web引用(转载)
我们都知道,调用WebService可以在工程中对WebService地址进行WEB引用,但是这确实很不方便.我想能够利用配置文件灵活调用WebService.如何实现呢? 用C#通过反射实现动态调用 ...
- 利用Web Services开发分布式应用
一.引言 在前面文章中分别介绍了MSMQ和.NET Remoting技术,今天继续分享.NET 平台下另一种分布式技术——Web Services 二.Web Services 详细介绍 2.1 We ...
随机推荐
- Intellij 导入play framework 项目
新建一个项目 play new helloworld IshallbeThatIshallbe:~ iamthat$ mkdir temp IshallbeThatIshallbe:~ iamthat ...
- Java运行系统命令并获取值(Process java.lang.Runtime.exec(String[] cmdarray, String[] envp, File dir)
package test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; ...
- URL中的特殊字符处理笔记
URL中的特殊字符 有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了.编码的格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII ...
- lintcode 中等题 :Maximum Product Subarray 最大连续乘积子序列
题目 乘积最大子序列 找出一个序列中乘积最大的连续子序列(至少包含一个数). 样例 比如, 序列 [2,3,-2,4] 中乘积最大的子序列为 [2,3] ,其乘积为6. 解题 法一:直接暴力求解 时 ...
- JTable单元格放自定义控件(一)-如何在JTable的单元格放JPanel
原文链接:http://blog.sina.com.cn/s/blog_7f1c8c710101hdpf.html 最近自己尝试着模仿着实现一款非常有名的进销库存管理系统(智慧记)里面的一个功能.功能 ...
- Linux磁盘管理命令
1.磁盘分割: fdisk [root@linux ~]# fdisk [-l] 装置名称 参数: -l :输出后面接的装置所有的partition内容.若仅有fdisk -l时, 则系统将会把整个系 ...
- linux 防火墙iptables简明教程
前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔 ...
- office开发心得——基于模板开发
这几天正在写一个小程序,但用到生成word表格和Excel表格.到网上查了一些资料,发现如果生成表格模板相对比较固定即可把其制作成模板,需要设置什么格式可以直接在模板中设置,而程序仅需替换相应的内容即 ...
- android logcat里面AndroidRuntime FATAL EXCEPTION: main这个是什么问题啊。
android logcat里面AndroidRuntime FATAL EXCEPTION: main这个是什么问题啊. http://zhidao.baidu.com/link?url=mUI11 ...
- android源码编译1
一.环境说明: 1.liunx系统:Ubuntu12.04 2.jdk:sun-java6-jdk 3.g++4.5 gcc4.5 二.android源码的目录结构 |-- Makefile |-- ...