/ / Perl WSDL11 не може змусити його працювати на WSDL з імпортом XML - xml, perl, web-сервісами, милом, wsdl

Perl WSDL11 не може змусити його працювати на WSDL з імпортом XML - xml, perl, web-сервісами, милом, wsdl

Я новачок у програмуванні Perl.

Щоб дізнатися про доступ до мильної служби, я намагався створити клієнт з милом, який може підключитися до нього це в якому мені вдалося скористатися веб-сервісом.

Тепер я перемістив свій код, щоб підключитися до служби мила компанії, але я зіткнувся з проблемою.

"Помилка говорить, що їх не було port_type і ніякої операції також."

Переглянути фрагмент коду нижче.

#!/usr/bin/perl

use 5.018;
use strict;
use warnings;

use Data::Dumper qw{Dumper};
use XML::Compile::SOAP11;
use XML::Compile::SOAP12;
use XML::Compile::WSDL11;

my $WsdlUrl;
my $WsdlXml;
my $SoapSrvc;
my (%SoapOps);

$WsdlUrl = "http://maxcavmes04/CamstarExternal/camstar.svc";
$WsdlXml = XML::LibXML->new->parse_file($WsdlUrl);
$SoapSrvc = XML::Compile::WSDL11->new($WsdlXml);

print Dumper($SoapSrvc);

foreach my $SoapOp ($SoapSrvc->operations())
{
# XML::Compile::SOAP 2.x
if ($XML::Compile::SOAP::VERSION > 1.99)
{
$SoapOps{$SoapOp->name}
= $SoapSrvc->compileClient(operation => $SoapOp->name,
port => SOAP_PORT_TYPE);
}
else  # XML::Compile::SOAP 0.7x
{
$SoapOps{$SoapOp->{operation}}
=  $SoapSrvc->compileClient(operation => $SoapOp->{operation},
port => SOAP_PORT_TYPE);
}
}

print "nn";
exit(0);

Розслідуючи його далі, чому він не виграв, я використовую програмне забезпечення третьої сторони .NET WebService Studio. З повернення студії WebService я усвідомлюю, що у моїй компанії мило обслуговування використовує два WSDL файл через WSDL:Import.

Я хотів би попросити у цієї спільноти про те, як я можу змінити мою програму, щоб мати доступ до служби мила компанії за допомогою WSDL11.

Я також додавав дані, зняті з використанням служби миль, як посилання через print Dumper($SoapSrvc) заява

Посилання: Дані Dumped_SoapSrvc

Відповіді:

0 для відповіді № 1

Причиною може бути те, що XML :: Compile ::WSDL11 не завантажує xsd, на який посилається файл wsdl. Вам потрібно завантажити файл wsdl. Прочитайте його, щоб знайти посилання на зовнішні файли, такі як. Завантажте наведені файли, перевірте їх для посилань ... Коли у вас є все, що ви можете використовувати його, як це:

my $wsdl = XML::Compile::WSDL11->new();
$wsdl->importDefinitions("first.xsd");
$wsdl->importDefinitions("second.xsd");
$wsdl->addWSDL("my_service.wsdl");

Якщо ви розмістите файл wsdl, було б простіше діагностувати проблему.