您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页SOAP请求示例

SOAP请求示例

来源:华佗小知识


----INDEX----

1. soap请求方式

2. post请求方式

3. SHOWALLNODE函数(关于节点各属性和数据显示)

---------------------

一.SOAP请求示例

下面是一个 SOAP 请求示例。所显示的占位符需要由实际值替换。

POST /WebService1/UserSignOn.asmx HTTP/1.1

Host: 1Array2.100.100.81

Content-Type: text/xml; charset=utf-8

Content-Length: length

SOAPAction: \"http://tempuri.org/LoginByAccount\"

xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"

xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">

string

string

为了与WEBSERVICE交互,需要构造一个与上完全相同的SOAP请求:

<%

url = \"http://1Array2.100.100.81/WebService1/UserSignOn.asmx\"

SoapRequest=\"encoding=\"&CHR(34)&\"utf-8\"&CHR(34)&\"?>\"& _

\"xmlns:xsi=\"&CHR(34)&\"http://www.w3.org/2001/XMLSchema-instance\"&CHR(34)&\" \"& _

\"xmlns:xsd=\"&CHR(34)&\"http://www.w3.org/2001/XMLSchema\"&CHR(34)&\" \"& _

\"xmlns:soap=\"&CHR(34)&\"http://schemas.xmlsoap.org/soap/envelope/\"&CHR(34)&\">\"& _

\"\"& _

\"\"& _

\"\"&username&\"\"& _

\"\"&password&\"\"& _

\"\"& _

\"\"& _

\"\"

Set xmlhttp = server.CreateObject(\"Msxml2.XMLHTTP\")

xmlhttp.Open \"POST\

xmlhttp.setRequestHeader \"Content-Type\

xmlhttp.setRequestHeader \"HOST\

xmlhttp.setRequestHeader \"Content-Length\

xmlhttp.setRequestHeader \"SOAPAction\

\"http://tempuri.org/LoginByAccount\" ‘一定要与WEBSERVICE的命名空间相同,否则服务会拒绝

xmlhttp.Send(SoapRequest)

‘这样就利用XMLHTTP成功发送了与SOAP示例所符的SOAP请求.

‘检测一下是否成功:

Response.Write xmlhttp.Status&” ”

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

xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"

xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">

string

这是与刚才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,\"<\

xmlStr = Replace(xmlStr,\">\

Response.write xmlStr

Else

Response.Write xmlhttp.Status&\" \"

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.Status&\" \"

Response.Write xmlhttp.StatusText

End if

显示某节点各个属性和数据的FUNCTION:

Function showallnode(rootname,myxmlDOC)望大家不断完鄯 2005-1-Array writed by 844

if rootname<>\"\" then

set

nodeobj=myxmlDOC.documentElement.selectSingleNode(\"//\"&rootname&\"\")当前结点对像

nodeAttributelen=myxmlDOC.documentElement.selectSingleNode(\"//\"&rootname&\"\").attributes.length当前结点属性数

returnstring=returnstring&\"
节点名称:\"&rootname

if nodeobj.text<>\"\" then

returnstring=returnstring&\"
节点的文本:(\"&nodeobj.text&\")\"

end if

returnstring=returnstring&\"
{
\"

if nodeAttributelen<>0 then

returnstring=returnstring&\"
属性数有  \"&nodeAttributelen&\" 个,分别是:\"

end if

for i=0 to nodeAttributelen-1

returnstring=returnstring&\"

  • \"&nodeobj.attributes(i).Name&\": \"&nodeobj.getAttribute(nodeobj.attributes(i).Name)&\"
  • \"

    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&\"

    有 \"&childnodelen&\" 个子节点;

    分别是: \"

    for i=0 to childnodelen-1

    returnstring=returnstring&\"

  • \"&childnodeobj.item(i).nodeName&\"
  • \"

    next

    end if

    end if

    returnstring=returnstring&\"
    }
    \"

    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\SHOWALLNODE

    Set xmlDOC = nothing

    Else

    Response.Write xmlhttp.Status&\" \"

    Response.Write xmlhttp.StatusText

    End if

    二.POST请求示例

    HTTP POST

    下面是一个 HTTP POST 请求示例。所显示的占位符需要由实际值替换。

    POST /WebService1/UserSignOn.asmx/LoginByAccount HTTP/1.1

    Host: 1Array2.100.100.81

    Content-Type: application/x-www-form-urlencoded

    Content-Length: length

    username=string&password=string

    构造POST请求:

    <%

    url

    \"http://1Array2.100.100.81/WebService1/UserSignOn.asmx/LoginByAccount\"

    =

    SoapRequest=\"username=\"&username&\"&password=\"&password

    Set xmlhttp = server.CreateObject(\"Msxml2.XMLHTTP\")

    xmlhttp.Open \"POST\

    xmlhttp.setRequestHeader

    \"application/x-www-form-urlencoded\"’注意

    \"Content-Type\

    xmlhttp.setRequestHeader \"HOST\

    xmlhttp.setRequestHeader \"Content-Length\

    xmlhttp.Send(SoapRequest)

    ‘这样就利用XMLHTTP成功发送了与HTTP POST示例所符的POST请求.

    ‘检测一下是否成功:

    Response.Write xmlhttp.Status&” ”

    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

    string

    显示:

    If xmlhttp.Status = 200 Then

    Set xmlDOC = server.CreateObject(\"MSXML.DOMDocument\")

    xmlDOC.load(xmlhttp.responseXML)

    showallnode \"string\调用SHOWALLNODE

    Set xmlDOC = nothing

    Else

    Response.Write xmlhttp.Status&\" \"

    Response.Write xmlhttp.StatusText

    End if

    以上是ASP用XMLHTTP组件发送SOAP请求,调用WEBSERVICE的方法,本人推荐在ASP环境下使用第一种方法,如果有更好的方法请联系本人mailto:lyq8442002@msn.com .使用HTTP GET的方式如果有中文会出问题,数据量又不大。用HTTP POST的方法感觉多此一举,其实上面的例子就是用POST的方式,只不过不是用POST的请求。用SOAP TOOLKIT要装软件,而且已没有后继版本。---全文完

    因篇幅问题不能全部显示,请点此查看更多更全内容

    Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

    违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

    本站由北京市万商天勤律师事务所王兴未律师提供法律服务