Как мне отправить этот SOAP XML на Perl? - PullRequest
3 голосов
/ 02 октября 2009

Я должен отправить XML ниже. И я понятия не имею с чего начать. Я знаю, что мне нужно посмотреть SOAP в Perl, но это примерно так.

<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>

Ответы [ 5 ]

4 голосов
/ 02 октября 2009

С чего начать? Начните читать документацию для SOAP :: Lite ; здесь есть более широкие библиотеки обработки SOAP здесь .

Если вам нужна дополнительная помощь, вы можете найти то, что вам нужно, в некоторых из предыдущих вопросов о SOAP в Stackoverflow.

1 голос
/ 02 октября 2009

Размещенный вами фрагмент XML выглядит как схема XSD. Он описывает следующий XML:

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

В предоставленном вами фрагменте не указано, каким должно быть пространство имен CheckDomain или что должно быть внутри domainRef. Для этого вам нужен весь документ XSD.

Кроме того, не видя файл WSDL для службы, невозможно сказать, как превратить это в действительное сообщение SOAP. (Предполагая, что вы имеете дело с реальной службой SOAP, а не только со службой REST или XML-RPC, которая описывает свой ввод с использованием схемы XSD).

Прелесть SOAP в том, что вам обычно никогда не приходится делать это вручную. Вы просто получаете правильный инструмент и указываете его на файлы WSDL и XSD, публикуемые службой, и у вас автоматически создаются сгенерированные классы, которые делают правильные вещи.

0 голосов
/ 20 июня 2018

Используйте LWP::UserAgent, который является классом, реализующим веб-агент пользователя. LWP::UserAgent объекты могут быть использованы для отправки веб-запросов.

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;
0 голосов
/ 29 марта 2013

проверьте следующий URL о том, как использовать perl для отправки мыльных сообщений:

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

saludos,

0 голосов
/ 02 октября 2009

Ну, вы могли бы получить HTTP-клиента на CPAN, а затем просто использовать << (здесь документы) с (XML-закодированными значениями) интерполированными переменными для отправки запроса. Тогда вам нужно будет разобрать ответ. </p>

Должен быть SOAP-клиент для Perl, но с такой комбинацией я не сталкивался.

Интересный вопрос. Удачи вам с WSDL: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...