Добавление authHeader в Perl SOAP :: Lite запрос - PullRequest
3 голосов
/ 13 января 2011

У меня возникли проблемы при создании запроса к этому WSDL, который работает;это требует authHeaders, и мне не повезло, добавив их.Вот что я пытаюсь:


# make proxy for the service
my $soap = SOAP::Lite->service($wsdl);

# add fault hanlder
$soap->on_fault(

    sub { # SOAP fault handler
        my $soap = shift;
        my $res = shift;

        # Map faults to exceptions
        if(ref($res) eq '') {
            die($res);
        }
        else {
            die($res->faultstring);
        }

        return new SOAP::SOM;
    }

);

# authentication request headers
my @headers = (
    SOAP::Header->name('user')->value('myemail@whatever.com')->uri($apins),
    SOAP::Header->name('password')->value('mypassword')->uri($apins),
    SOAP::Header->name('appName')->value('TestApp')->uri($apins),
    SOAP::Header->name('appVersion')->value('0.02')->uri($apins)
);

# request method
print $soap->getCompanyInfo('NB', @headers);

Ответ, который я получаю при этом:

Ожидается строковое значение вместо SOAP :: ссылка на заголовок

Метод IУ меня есть два строковых параметра, оба необязательных.А предложения?

1 Ответ

6 голосов
/ 15 января 2011

Мне удалось получить помощь из списка рассылки SOAP :: Lite.Если я хочу передать свои собственные заголовки, я должен использовать метод вызова вместо фактического имени метода.


# create header for requests 
my $authHeader = SOAP::Header->name("xsd:authHeader" => 
\SOAP::Header->value(
    SOAP::Header->name('xsd:user')->value($s7user)->type(''),
    SOAP::Header->name('xsd:password')->value($s7pass)->type(''),
    SOAP::Header->name('xsd:appName')->value('TestApp')->type(''),
    SOAP::Header->name('xsd:appVersion')->value('0.03')->type('')
));

# create data to pass as method paramaters
my $params = SOAP::Data->name('ns:email')->value($s7user)->type('');

# request method
$soap->call('checkLogin', $params, $authHeader);

Чтобы использовать метод вызова, вам необходимо определить прокси (конечную точку)на вашем мыльном объекте.Надеюсь, что это будет полезно для кого-то еще в будущем.

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