Perl中的SOAP请求

时间:2018-07-06 17:28:16

标签: perl soap request wsdl

我必须在Perl中向某些Web服务发出SOAP请求。

详细说明我所拥有的:

这是SOAP的示例:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://webeph/wsdl/">
   <SOAP-ENV:Body>
      <ns1:importSheetRequest>
         <auth>
            <!-- auth data (userId and apiKey) -->
         </auth>
         <EPH>
            <!-- some custom params -->
         </EPH>
         <contract>true</contract>
      </ns1:importSheetRequest>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

到目前为止,这是Perl中的代码,但这很糟糕,我在寻找教程,但我不理解它,所以我会很乐意提供帮助。

    my $soap = SOAP::Lite->soapversion('1.2')->new(
        'service' => 'https://example.com/integration/webServices/api?wsdl',
        'timeout' => 600
    );
    $soap->transport->timeout(600);
    $soap->default_ns('https://example.com');
    $soap->on_action(
        sub
        { "https://example.com/integration/webServices/api?wsdl" }
    );
    my $request = $soap->call(
        'importSheet',
        SOAP::Data->name('userId')->value('123456'),
        SOAP::Data->name('apiKey')->value('abcdefgh123456'),
        SOAP::Data->name('contract')->value('true'),
    );


    my $result = $request ->result();

    print Dumper($result);

我得到的错误是:

  

-服务描述为'https://example.com/integration/webServices/api?wsdl'的崩溃   已加载:401未经授权

所以我认为授权有问题,所以问题应该在此部分:

 <auth>
    <!-- auth data (userId and apiKey) -->
 </auth>

所以这个:

    SOAP::Data->name('userId')->value('123456'),
    SOAP::Data->name('apiKey')->value('abcdefgh123456')

我认为应该嵌套在auth标记中,但我不知道这是否是问题以及如何解决。

0 个答案:

没有答案