ASP调用WebService服务接口

什么是WebService?

Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。

今天遇到一个项目,要在一个较老的系统(ASP写的)上面做功能集成,所以需要使用ASP来调用WebService的接口,网上关于这方面的资料很少,只有自己动手了。

相较于其它语言,通过ASP来访问接口的过程可能会稍微复杂一点,主要就是SOAP和XML的编写。推荐一个比较偷懒的方法,可以通过ReadyAPI(以前是SoapUI)直接获取,这款软件专门用于WebService接口的相关测试。

接口调用都大同小异,就使用项目中的接口举例。首先在ReadyAPI上新建项目,在Request的Form中输入需要的参数点击运行即可,然后切换到XML界面,就可以得到需要的信息。

接下来编写ASP请求即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<% 
Dim Url, strXml, XMLHTTP, xmlResponse
Url= "接口地址"
strXml = "<?xml version=""1.0""?>"
//编写SOAP信息,基本结构一定要有,否则无法被Java识别
strXml = strXml&"<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:web=""http://webService.core.jawave.com/"">"
strXml = strXml&"<soapenv:Header/>"
strXml = strXml&"<soapenv:Body>"
//接口中指定调用的方法
strXml = strXml&"<web:createUser>"
//接口需要的参数,这里是Json字符串
strXml = strXml&"<web:userJsonString>{"" userId "": ""zhangsan"",""userName"":""张三"",""emailAddress"":""aa@163.com"","" perCode "":""jawave""} </web:userJsonString>"
strXml = strXml&"</web:createUser>"
strXml = strXml&"</soapenv:Body>"
strXml = strXml&"</soapenv:Envelope>"
//输出参数,便于参看
response.write strXml&"</br></br>"
//创建MS的XMLHTTP组件
Set XMLHTTP = server.CreateObject("MSXML2.ServerXMLHTTP")
XMLHTTP.Open "post",Url,false
XMLHTTP.setrequestheader "content-length ",len(strXml)
XMLHTTP.setrequestheader "content-type", "application/x-www-form-urlencoded"
//发送信息到url
XMLHTTP.send strXml
If XMLHTTP.readystate <> 4 then
xmlResponse = "xml error"
Else
//服务器返回的信息
xmlResponse = XMLHTTP.responseText
End If
Set XMLHTTP = Nothing
if err.number <> 0 then
xmlResponse = "error "
err.clear
end If
//输出结果
Response.Write xmlResponse
%>