【问题标题】:Classic asp - only receiving part of soap response经典的 asp - 只接收肥皂响应的一部分
【发布时间】:2021-09-22 20:12:30
【问题描述】:

我正在尝试从经典 asp 调用一个肥皂请求(它将在稍后更新,但现在它仍然是经典 asp),但我只得到了一半的响应?
当我在 SoapUI 中使用请求字符串时,我得到了我正在寻找的响应,但在 asp 中我只收到了部分响应?


ASP 请求:

Set oXmlHTTP = CreateObject("Microsoft.XMLHTTP")

oXmlHTTP.Open "POST", "http://webservice-string?wsdl", False 
oXmlHTTP.setRequestHeader "Content-Type", "text/xml; charset=utf-8" 
oXmlHTTP.setRequestHeader "SOAPAction", "urn:action"


SOAPRequest = _
"<?xml version=""1.0"" encoding=""utf-8""?>" &_
"<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:head=""http://header.com"" xmlns:ser=""http://service.com"" xmlns:add=""http://service.com/domain/address"">" &_
   "<soapenv:Header>" &_
      "<head:OnBehalfOfUserId>stine</head:OnBehalfOfUserId>" &_
      "<head:RequestId>?</head:RequestId>" &_
      "<head:AuthenticationHeader>" &_
         "<head:SessionID>?</head:SessionID>" &_
      "</head:AuthenticationHeader>" &_
   "</soapenv:Header>" &_
   "<soapenv:Body>" &_
      "<ser:searchVisitationRequest>" &_
         "<ser:UserId>Stine</ser:UserId>" &_
         "<ser:RequestId>?</ser:RequestId>" &_
         "<add:SomeId>1234</add:SomeId>" &_
      "</ser:searchVisitationRequest>" &_
   "</soapenv:Body>" &_
"</soapenv:Envelope>"


On Error Resume Next
oXmlHTTP.send SOAPRequest   


If Err.Number Then 
    Err.Clear 
Else 
    SOAPResponse = oXmlHTTP.responseXML.text
End If 
On Error Goto 0 

if len(SOAPResponse) > 0 then         
    Response.Write SOAPResponse 
end if

ASP 响应:

2018-06-25T09:56:36.016+02:00server_ID{bla bla}5

SoapUI 响应

(来自相同的请求 - 包含“SearchVisitation”,这是我需要的结果!)

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
      <searchVisitationResponse xmlns="http://service.com">
         <ReplyInfo>
            <ReplyTimestamp>2018-06-25T08:47:48.204+02:00</ReplyTimestamp>
            <ServerId>server_ID</ServerId>
            <StatusMessage>{bla bla}</StatusMessage>
            <TransactionDuration>3</TransactionDuration>
         </ReplyInfo>
         <SearchVisitation>
            <OtherID>12345678</OtherID>
            <SearchVisitationID>
               <SubscriptionNo>Test1</SubscriptionNo> 
            </SearchVisitationID>
         </SearchVisitation>
      </searchVisitationResponse>
   </S:Body>
</S:Envelope>

我做错了什么?

【问题讨论】:

  • 你为什么输出SOAPRequest而不是SOAPResponse
  • 抱歉,这是一个错字 - 这是我尝试查看我发送的内容,但在复制到此处之前我忘记更改它。但是 SOAPResponse 是您在“ASP 响应”下看到的那个
  • 试试Set oXmlHTTP = server.Createobject("MSXML2.ServerXMLHTTP.6.0")。它可能没有任何区别,但您使用的是最新版本的 MSXML - 通常效果更好。
  • 感谢您的建议,我刚刚尝试过,但仍然得到相同的响应
  • 好的,我已经玩了一些 SoapUI 和一些不同的请求,似乎在 some 标签中发送的字符串(例如&lt;SubscriptionNo&gt;)是'没有收到就像他们被发送?网络服务可以/是​​否重新格式化字符串? (顺便说一句,其他网络服务调用工作正常,只有对这个的请求表现得很奇怪)

标签: soap asp-classic


【解决方案1】:

原来是这样的

oXmlHTTP.setRequestHeader "SOAPAction", "urn:action"

是导致请求出错的部分(我再次检查了urn:action 是否正确)。

删除它给了我正确的回应。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    相关资源
    最近更新 更多