2008-10-28 1 views
2

Я взаимодействую с платежным шлюзом и не имею никакой удачи в Net :: SSLeay и его подпрограмме post_https. Платежный шлюз выдал мне сертификат клиента, который должен использоваться для аутентификации. Perldoc Net :: SSLeay имеет следующий пример:Net :: SSLeay post_https Ошибка компиляции: Слишком много аргументов

($page, $response, %reply_headers) 
     = post_https('www.bacus.pt', 443, '/foo.cgi',   # 3b 
       make_headers('Authorization' => 
          'Basic ' . MIME::Base64::encode("$user:$pass",'')), 
       make_form(OK => '1', name => 'Sampo'), 
       $mime_type6, $path_to_crt7, $path_to_key8); 

Моя собственная версия ниже, и возвращает ошибку Слишком много аргументов для Net :: SSLeay :: post_https:

#!/usr/bin/perl 

use strict; 
use warnings; 
use Net::SSLeay qw(post_https); 

my %post = (
    #snip 
); 

my ($page, $response, %reply_headers) = post_https(
    'www.example.com', 
    443, 
    '/submit', 
    '', 
    make_form(%post), 
    'text/xml', 
    '/path/to/cert', 
    '/path/to/key', 
); 

Почему эта ошибка возникает?

ответ

2

Новые версии Net :: SSLeay не прототип, что старые версии есть. Читая источник старой и новой версии, я бы сказал, что прототип был ошибкой (код, который он вызывает, может обрабатывать больше переменных, чем рекламируется).

Решение, которое я рекомендую, заключается в обновлении до более новой версии Net :: SSLeay. Если это невозможно, назовите его как & post_https может быть быстрым, но безобразным решением.

1

Документация неверна. В моей копии (Net :: SSLeay 1,04) post_https показан в документации на примере, что вы процитировать, но объявляется взять максимум 6 аргументов:

sub post_https ($$$;***) { do_httpx2(POST => 1, @_) } 

Я не знаю, как сделать он работает.

Редактировать: Попробуйте называть post_https старомодным способом, как подпрограмму с использованием & post_https (...).

-2

У вас есть лишняя запятая после «/ путь/к/ключ»

+0

Это совершенно приемлемо в Perl и считается хорошим стилем. – 2008-10-28 00:18:08

+0

Аристотель прав. Дополнительная запятая есть, чтобы вы могли легко переупорядочить элементы списка, как указано в Perl Best Practices: http://www.amazon.com/Perl-Best-Practices-Damian-Conway/dp/0596001738 – cowgod 2008-10-28 05:17:49

Смежные вопросы