Perl + SOAP :: Lite

问题描述:

这是我想用SOAP :: Lite建模的SOAP文档。Perl + SOAP :: Lite

<SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<SOAP-ENV:Body> 
<GetOrderByPartnerOrderID xmlns="http://api.geotrust.com/webtrust/query"> 
    <Request> 
     <QueryRequestHeader> 
      <PartnerCode>partnercode</PartnerCode> 
      <AuthToken> 
       <UserName>username</UserName> 
       <Password>password</Password> 
      </AuthToken> 
     </QueryRequestHeader> 
     <PartnerOrderID>partnerid</PartnerOrderID> 
    </Request> 
</GetOrderByPartnerOrderID> 
</SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

这是我用来模拟此文档的Perl代码。

my $params = SOAP::Data->name("Request" => 
       \SOAP::Data->value => (
        \SOAP::Data->name("QueryRequestHeader" => 
         \SOAP::Data->value(
          SOAP::Data->name("PartnerCode" => $partnercode), 
          SOAP::Data->name("AuthToken" => 
          \SOAP::Data->value(
           SOAP::Data->name("UserName" => $username), 
           SOAP::Data->name("Password" => $password) 
          ) 
          ) 
         ) 
        ), 
        \SOAP::Data->name("PartnerOrderID" => $poid) 
       ); 

但是,(我使用SOAP ::精简版与轨迹)这个代码生成的SOAP文档如下:

<SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<SOAP-ENV:Body> 
    <GetOrderByPartnerOrderID xmlns="http://api.geotrust.com/webtrust/query"> 
     <Request> 
      <QueryRequestHeader> 
       <PartnerCode>partnercode</PartnerCode> 
       <AuthToken> 
        <UserName>username</UserName> 
        <Password>password</Password> 
       </AuthToken> 
      </QueryRequestHeader> 
     </Request> 
     <Request> 
      <PartnerOrderID>partnerid</PartnerOrderID> 
     </Request> 
    </GetOrderByPartnerOrderID> 
    </SOAP-ENV:Body> 
    </SOAP-ENV:Envelope> 

出于某种原因,它会关闭请求标签,然后再打开它。它似乎应该是一个简单的解决方案,但我已经尝试了所有我能想到的并且无法解决的问题。任何帮助将不胜感激。

想通了。有\SOAP::Data->value => (而不是\SOAP::Data->value(