【问题标题】:Perl SOAP::Lite server basicsPerl SOAP::Lite 服务器基础
【发布时间】:2015-10-12 17:01:06
【问题描述】:

我正在尝试使用 SOAP::Lite 编写一个肥皂服务器以与现有的肥皂客户端(特别是 tr-069 dsl 调制解调器)一起工作,但目前尚不清楚传入的 xml 如何触发调用。肥皂精简版邮件列表版主将我添加到他们的列表中的速度很慢,所以我想我会看看这里是否有人可以帮助我指出正确的方向......

首先,我得到:

<faultstring>Unrecognized header has mustUnderstand attribute set to 'true'</faultstring>

我怀疑这意味着我没有定义一个函数来处理它想要处理的东西。处理程序代码(基于 SOAP::Server 手册页中的示例):

SOAP::Transport::HTTP::CGI
    ->dispatch_to('PeakACS')
    ->handle;
BEGIN {
    package PeakACS;
    use vars qw(@ISA);
    @ISA = qw(Exporter SOAP::Server::Parameters);
    use SOAP::Lite;

    my $debugging = 1;
    my $console = 0;
    my $prog_id = 'peakacs';
    my $log = DebugLog->new($prog_id, $debugging, $console);
    $log->debug_msg('info', 'handle', '%s', 'handler setup');

    sub ID {
        $log->debug_msg('info', 'id', '%s', 'got an id');
    }

    sub Header {
        $log->debug_msg('info', 'header', '%s', 'heading');
    }

    sub Inform {
        $log->debug_msg('info', 'inform', '%s', 'informing');
    }
}

如果我理解 SOAP 正确(这远非给定),则该标记应转换为对 Inform 的调用 - xml 请求的顶部如下所示:

<SOAP-ENV:Envelope
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:cwmp="urn:dslforum-org:cwmp-1-0">
    <SOAP-ENV:Header>
      <cwmp:ID SOAP-ENV:mustUnderstand="1">1539095918</cwmp:ID>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
      <cwmp:Inform>
        <DeviceId>

【问题讨论】:

    标签: perl soap


    【解决方案1】:

    如果你想为 Header 中的某个实体设置 mustUnderstand 属性,请执行以下操作:

    $sheader = SOAP::Header->name('someEntity');
    $sheader->mustUnderstand(1);
    

    当调用方法时:

    $soap->someMethod($sheader,@request);
    

    产生:

    <soap:Header>
      <someEntity soap:mustUnderstand="1" />
    </soap:Header>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-03
      • 1970-01-01
      • 1970-01-01
      • 2016-02-01
      • 1970-01-01
      相关资源
      最近更新 更多