Начните с указания wget / curl / lwp / etc.на http://velecloudserver/fortress/dragnetwebservice.asmx?WSDL и посмотрите, вернете ли вы файл WSDL.
Если вы это сделаете, сравните его с четырьмя типами, перечисленными в POD SOAP :: Lite.Ваш пример запроса выглядит как форма Docment / Literal, так что вы можете написать что-то вроде этого:
use SOAP::Lite;
my $soap = SOAP::Lite->new( file => 'http://velecloudserver/fortress/dragnetwebservice.asmx?WSDL');
$soap->on_action( sub { "urn:dragnetservice#LoginPlainText" });
$soap->autotype(0);
$soap->default_ns('urn:LoginPlainText');
my $som = $soap->call("LoginPlainText",
SOAP::Data->name('strLogin')->value( 'admin' ),
SOAP::Data->name('strPassword')->value('Adm1234'),
);
die $som->fault->{ faultstring } if ($som->fault);
print $som->result, "\n";
Если вы не получите WSDL, я бы попробовал заменить вызов конструктора на:
my $soap = SOAP::Lite->new( proxy => 'http://velecloudserver/fortress/dragnetwebservice.asmx');
В последний раз, когда я работал с SOAP :: Lite, я написал короткую программу, аналогичную приведенной выше, и запустил ее в отладчике.Перед тем, как выполнить строку $ soap-> call (), я посмотрел на внутренности объекта $ soap и посмотрел на полезную нагрузку запроса, чтобы увидеть, соответствует ли XML некоторому рабочему XML, который у меня был, с помощью Java-клиента soapUI.org.
Мне пришлось пару раз прочитать POD, и я покопался в источнике, чтобы выяснить, как некоторые методы, такие как default_ns (), влияют на сгенерированный XML.После того, как я это сделал, все стало намного понятнее.
Примечание: SOAP :: Lite любит die () в случае неудачи.Оберните ваши звонки в eval {} для производственного использования.