Perl WSDL веб-сервис вызова - PullRequest
       3

Perl WSDL веб-сервис вызова

1 голос
/ 01 марта 2012

Я новичок в вызове perl webservice.

Я вызываю функцию websvice wsdl и получаю ответ как ошибка 400 неверных запросов.Я пробовал и гуглил многие сайты, но не смог добиться успеха.Пожалуйста, помогите мне в решении этой проблемы.Ниже мой код.

use SOAP::Lite;
my $lite = SOAP::Lite -> service('http://localhost:8080/service.svc?wsdl');
my $arg1 ="SRC";
my $arg2 = "ARG";
my @arg3 = ('test1','test2','test3');
my @res = $lite->Func($arg1,$arg2,@arg3);
print "@res"; 

Ответы [ 3 ]

1 голос
/ 01 марта 2012

У меня просто была похожая проблема , и казалось, что SOAP::Lite может иметь ошибку, связанную с обработкой сложных структур данных.

Как бы то ни было, если вашему методу SOAP (Func) требуется 3 аргумента, последний должен быть ссылкой на массив.

Также с помощью use SOAP::Lite qw(trace) вы можете отладить конверт запроса.

0 голосов
/ 01 марта 2012

Я не уверен, насколько велика разница между WSDL и веб-сервисом ASMX.Если не сильно, попробуйте этот пример кода, который мне подходит.

  my $soap = SOAP::Lite
    -> uri('http://foo.com')
    -> on_action( sub { join '/', 'http://foo.com', $_[1] } )
    -> proxy('http://foo/services/GetEmailAddress/Service.asmx');

  my $method = SOAP::Data->name('GetEmailAddress')
    ->attr({xmlns => 'http://foo.com/'});

  my @params = ( SOAP::Data->name(username => $user) ); 
  my $email = $soap->call($method => @params)->result;

Ввод - это имя пользователя, вывод - адрес электронной почты.Я полагаю, что веб-сервис ASMX был создан в .NET 3.

Все, что я знаю о том, как это работает, я узнал из http://msdn.microsoft.com/en-us/library/ms995764.aspx.

0 голосов
/ 01 марта 2012

Если вы не ограничены в SOAP :: Lite, я попрошу вас взглянуть на XML :: Compile :: SOAP :: Client

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