ASP调用WEBSERVICE文档
2018-09-06 12:47
ASP调用WEBSERVICE
----INDEX----
1.soap请求方式
2.post请求方式
3.SHOWALLNODE函数(关于节点各属性和数据显示)
---------------------
一.SOAP请求示例
下面是一个 SOAP 请求示例。所显示的占位符需要由实际值替换。
POST /WebService1/UserSignOn.asmx HTTP/1.1
Host: 192.100.100.81
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction:
<?xml version=1.0 encoding=utf-8?>
<soap:Envelope xmlns:xsi=
<soap:Body>
<LoginByAccount xmlns=
<username>string</username>
<password>string</password>
</LoginByAccount>
</soap:Body>
</soap:Envelope>
为了与WEBSERVICE交互,需要构造一个与上完全相同的SOAP请求:
<%
url =
SoapRequest=<?xml version=CHR(34)1.0CHR(34) encoding=CHR(34)utf-8CHR(34)?> _
<soap:Envelope xmlns:xsi=CHR(34)
xmlns:xsd=CHR(34)
xmlns:soap=CHR(34)
<soap:Body> _
<LoginByAccount xmlns=CHR(34)
<username>username</username> _
<password>password</password> _
</LoginByAccount> _
</soap:Body> _
</soap:Envelope>
Set xmlhttp = server.CreateObject(Msxml2.XMLHTTP)
xmlhttp.Open POST,url,false
xmlhttp.setRequestHeader Content-Type, text/xml;charset=utf-8
xmlhttp.setRequestHeader HOST,192.100.100.81
xmlhttp.setRequestHeader Content-Length,LEN(SoapRequest)
xmlhttp.setRequestHeader SOAPAction, ‘一定要与WEBSERVICE的命名空间相同,否则服务会拒绝
xmlhttp.Send(SoapRequest)
‘这样就利用XMLHTTP成功发送了与SOAP示例所符的SOAP请求.
‘检测一下是否成功:
Response.Write xmlhttp.Status”nbsp;”
Response.Write xmlhttp.StatusText
Set xmlhttp = Nothing
%>
如果成功会显示200 ok,不成功会显示 500 内部服务器错误? Connection: keep-alive .
成功后就可以利用WEBSERVICE的响应,如下:
SOAP响应示例
下面是一个 SOAP 响应示例。所显示的占位符需要由实际值替换。
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version=1.0 encoding=utf-8?>
<soap:Envelope xmlns:xsi=
<soap:Body>
<LoginByAccountResponse xmlns=
<LoginByAccountResult>string</LoginByAccountResult>
</LoginByAccountResponse>
</soap:Body>
</soap:Envelope>
这是与刚才SOAP请求示例所对应的SOAP响应示例,在成功发送请求后,就可以查看该响应 :
If xmlhttp.Status = 200 Then
Set xmlDOC =server.CreateObject(MSXML.DOMDocument)
xmlDOC.load(xmlhttp.responseXML)
xmlStr = xmlDOC.xml
Set xmlDOC=nothing
xmlStr = Replace(xmlStr,<,lt;)
xmlStr = Replace(xmlStr,>,gt;)
Response.write xmlStr
Else
Response.Write xmlhttp.Statusnbsp;
Response.Write xmlhttp.StatusText
End if
请求正确则给出完整响应,请求不正确(如账号,密码不对)响应的内容就会信息不完整.
取出响应里的数据,如下:
If xmlhttp.Status = 200 Then
Set xmlDOC = server.CreateObject(MSXML.DOMDocument)
xmlDOC.load(xmlhttp.responseXML)
Response.Write xmlDOC.documentElement.selectNodes(//LoginByAccountResult)(0).text ‘显示节点为LoginByAccountResult的数据(有编码则要解码)
Set xmlDOC = nothing
Else
Response.Write xmlhttp.Statusnbsp;
Response.Write xmlhttp.StatusText
End if
显示某节点各个属性和数据的FUNCTION:
Function showallnode(rootname,myxmlDOC)望大家不断完鄯 2005-1-9 writed by 844
if rootname<> then
set nodeobj=myxmlDOC.documentElement.selectSingleNode(//rootname)当前结点对像
nodeAttributelen=myxmlDOC.documentElement.selectSingleNode(//rootname).attributes.length当前结点属性数
returnstring=returnstring<BR>节点名称:rootname
if nodeobj.text<> then
returnstring=returnstring<BR>节点的文本:(nodeobj.text)
end if
returnstring=returnstring<BR>{<BR>
if nodeAttributelen<>0 then
returnstring=returnstring<BR>属性数有nbsp; nodeAttributelen 个,分别是:
end if
for i=0 to nodeAttributelen-1
next
if nodeobj.childNodes.Length<>0 then
if nodeobj.hasChildNodes() and lcase(nodeobj.childNodes.item(0).nodeName)<>#text then是否有子节点
set childnodeobj=nodeobj.childNodes
childnodelen=nodeobj.childNodes.Length
returnstring=returnstring<BR><BR>有 childnodelen 个子节点;<BR>分别是:
for i=0 to childnodelen-1
returnstring=returnstring<li>childnodeobj.item(i).nodeName</li>
next
end if
end if
returnstring=returnstring<BR>}<BR>
response.write returnstring
set nodeobj=nothing
end if
End Function
可以这样用:
If xmlhttp.Status = 200 Then
Set xmlDOC = server.CreateObject(MSXML.DOMDocument)
xmlDOC.load(xmlhttp.responseXML)
showallnode LoginByAccountResponse,xmlDOC’调用SHOWALLNODE
Set xmlDOC = nothing
Else
Response.Write xmlhttp.Statusnbsp;
Response.Write xmlhttp.StatusText
End if
二.POST请求示例
HTTP POST
下面是一个 HTTP POST 请求示例。所显示的占位符需要由实际值替换。
POST /WebService1/UserSignOn.asmx/LoginByAccount HTTP/1.1
Host: 192.100.100.81
Content-Type: application/x-
Content-Length: length
username=stringpassword=string
构造POST请求:
<%
url =
SoapRequest=username=usernamepassword=password
Set xmlhttp = server.CreateObject(Msxml2.XMLHTTP)
xmlhttp.Open POST,url,false
xmlhttp.setRequestHeader Content-Type, application/x-www-form-urlencoded’注意
xmlhttp.setRequestHeader HOST,192.100.100.81
xmlhttp.setRequestHeader Content-Length,LEN(SoapRequest)
xmlhttp.Send(SoapRequest)
‘这样就利用XMLHTTP成功发送了与HTTP POST示例所符的POST请求.
‘检测一下是否成功:
Response.Write xmlhttp.Status”nbsp;”
Response.Write xmlhttp.StatusText
Set xmlhttp = Nothing
%>
如果成功会显示200 ok,不成功会显示 500 内部服务器错误? Connection: keep-alive .
成功后就可以利用WEBSERVICE的响应,如下:
HTTP POST
下面是一个 HTTP POST 响应示例。所显示的占位符需要由实际值替换。
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version=1.0 encodi
上一篇:ASP中Cache技术的应用
下一篇:newasp櫓main잚