【发布时间】: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>
【问题讨论】: