Я новачок у програмуванні 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, було б простіше діагностувати проблему.