如何在Perl中发送此SOAP XML?

如何在Perl中发送此SOAP XML?,xml,perl,soap,client,Xml,Perl,Soap,Client,我必须在下面发送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="fal

我必须在下面发送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>

好吧,您可以在CPAN上获得一个HTTP客户端,然后使用从哪里开始?开始阅读文档以了解更多信息;有更多扩展的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文件,就可以自动生成执行正确操作的类。

在如何使用perl发送soap消息中查看以下url:


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;
使用严格;
使用LWP::UserAgent;
使用HTTP::请求;
我的$message=”
$number
";
my$userAgent=LWP::userAgent->new();
我的$request=HTTP::request->new(POST=>'http://server:port/endpoint');
#$request->header(SOAPAction=>“”)#如果需要,请使用它
$request->content($message);
$request->content_type(“text/xml;charset=utf-8”);
我的$response=$userAgent->request($request);
#$response->code==200
打印$response->as_字符串;