这是我尝试使用 SOAP::Lite 建模的 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>
<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::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>
</Request>
<Request>
<PartnerOrderID>partnerid</PartnerOrderID>
</Request>
</GetOrderByPartnerOrderID>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
出于某种原因,它关闭了 Request 标签,然后再次打开它。似乎它应该是一个简单的解决方法,但我已经尝试了所有我能想到的但无法解决的问题。任何帮助将不胜感激。