繁体   English   中英

如何在Perl中发送此SOAP XML?

[英]How do I send this SOAP XML in Perl?

我必须在下面发送XML。 不知道从哪里开始。 我知道我需要在Perl中查找SOAP,但大致就是这样。

<xs:element name="CheckDomain"> 
<xs:complexType> 
<xs:sequence> 
<xs:element name="domain" type="domainRef"/> 
<xs:element name="suggestions" type="xs:boolean" default="false" minOccurs="0"/> 
</xs:sequence> 
</xs:complexType> 
</xs:element>

从哪儿开始? 开始阅读SOAP :: Lite的文档; 还有更广泛的SOAP处理库在这里

如果您需要更多帮助,可以在Stackoverflow上的SOAP早期问题中找到所需的内容

您发布的XML代码段看起来像XSD架构。 它描述了以下XML:

<CheckDomain xmlns="...">
 <domainRef>...</domainRef>
 <suggestions>true</suggestions> <!-- or it could be "false" -->
</CheckDomain>

您提供的代码段没有说明CheckDomain需要什么命名空间,或者什么应该在domainRef中。 您需要整个XSD文档。

此外,如果没有看到服务的WSDL文件,就无法告诉如何将其转换为有效的SOAP消息。 (假设您正在处理真正的SOAP服务,而不仅仅是处理使用XSD架构描述其输入的REST或XML-RPC服务)。

SOAP的优点在于您通常不必手动执行任何操作。 您只需获得正确的工具并将其指向服务发布的WSDL和XSD文件,您就会自动生成能够正确执行的类。

好吧,你可以在CPAN上获得一个HTTP客户端,然后只需使用带有(XML编码值)插值变量的<<(here documents)来发送请求。 然后你需要解析响应。

Perl应该有一个SOAP客户端,但这不是我遇到过的组合。

但有趣的问题。 WSDL打击时好运:-)

检查以下url如何使用perl发送soap消息:

http://users.skynet.be/pascalbotte/rcx-ws-doc/perlpost.htm

saludos,

使用LWP::UserAgent ,它是实现Web用户代理的类。 LWP::UserAgent对象可用于分派Web请求。

use strict;
use LWP::UserAgent;
use HTTP::Request;

my $message = "<?xml version=\"1.0\" encoding=\"utf-8\"?>
               <soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" 
                xmlns:ecn=\"http://www.alcatel.com/ecn_csa/EcnServices.wsdl\">
               <soapenv:Body>
               <ecn:GetBusinessAccount>
               <accountNumber>$number</accountNumber>
               </ecn:GetBusinessAccount>
               </soapenv:Body>
               </soapenv:Envelope>";
my $userAgent = LWP::UserAgent->new();
my $request = HTTP::Request->new(POST => 'http://server:port/endpoint');
# $request->header(SOAPAction => '""'); #use it if required
$request->content($message);
$request->content_type("text/xml; charset=utf-8");
my $response = $userAgent->request($request);
# $response->code == 200
print $response->as_string;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM