问题描述
|
作为客户端,我有以下代码:
my $soap = SOAP::Lite
-> uri(\'$uri_address\')
-> on_action( sub { join \'/\',\'$uri_address\',$_[1] } )
-> proxy(\'$url_address\');
my $method = SOAP::Data->name(\'MyMethod\')
->attr({xmlns => \'$uri_address\'});
#The parameters are held in @params
my @params = ( SOAP::Data->name(xmlData => $xml_string));
my $result = $soap
->soapversion(\'1.2\')
->call($method => @params);
i f ($result->fault)
{
print $result->faultstring;
}
else
{
print $result->result;
}
我用+trace=>all
,并在日志中得到:
SOAP::Transport::new: ()
SOAP::Serializer::new: ()
SOAP::Deserializer::new: ()
SOAP::Parser::new: ()
SOAP::Lite::new: ()
SOAP::Transport::HTTP::Client::new: ()
SOAP::Data::new: ()
SOAP::Data::new: ()
SOAP::Lite::call: ()
SOAP::Serializer::envelope: ()
SOAP::Serializer::envelope: SOAP::Data=HASH(0x35bb7f4) SOAP::Data=HASH(0x35bba94)
SOAP::Data::new: ()
SOAP::Data::new: ()
SOAP::Data::new: ()
SOAP::Data::new: ()
Element \'xmlData\' can\'t be allowed in valid XML message. Died. at C:/Perl/site/lib/SOAP/Lite.pm line 1412.
SOAP::Lite::DESTROY: ()
SOAP::Serializer::DESTROY: ()
SOAP::Data::DESTROY: ()
SOAP::Data::DESTROY: ()
SOAP::Data::DESTROY: ()
SOAP::Data::DESTROY: ()
SOAP::Data::DESTROY: ()
SOAP::Data::DESTROY: ()
SOAP::Transport::DESTROY: ()
SOAP::Transport::HTTP::Client::DESTROY: ()
SOAP::Deserializer::DESTROY: ()
SOAP::Parser::DESTROY: ()
有人有解决方案吗?
提前致谢!
解决方法
XML§2.3
以字符串\“ xml \” […]开头的名称保留用于本规范的此版本或将来版本中的标准化。