Perl + SOAP :: Lite - PullRequest
       19

Perl + SOAP :: Lite

0 голосов
/ 05 августа 2010

Это документ 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>
        <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>

По какой-то причине он закрывает тег запроса, а затем открываетэто снова.Кажется, это должно быть легко исправить, но я перепробовал все, что мог придумать, и не могу понять это.Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 05 августа 2010

Разобрался.Имел \SOAP::Data->value => ( вместо \SOAP::Data->value(.

...