Net :: SSLeay post_httpsコンパイルエラー:引数が多すぎます
質問
私は支払いゲートウェイとインターフェースをとっていますが、Net :: SSLeayとそのpost_httpsサブルーチンと運がありません。支払いゲートウェイは、認証に使用する必要があるクライアント証明書を発行しました。 Net :: SSLeay perldocには次の例があります:
($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',
);
このエラーが発生する理由
解決
Net :: SSLeayの新しいバージョンには、古いバージョンにあるプロトタイプがありません。古いバージョンと新しいバージョンのソースを読むと、プロトタイプはバグだと思います(呼び出したコードは、宣伝されているよりも多くの変数を処理できます)。
推奨する解決策は、Net :: SSLeayの新しいバージョンにアップグレードすることです。それが不可能な場合は、& post_httpsのように呼び出すと、簡単ですがbutい修正になります。
他のヒント
ドキュメントが間違っています。私のコピー(Net :: SSLeay 1.04)では、引用した例とともにpost_httpsがドキュメントに示されていますが、最大6つの引数を取るように宣言されています:
sub post_https ($$;***) { do_httpx2(POST => 1, @_) }
それを機能させる方法はまだわかりません。
編集:& post_https(...)を使用したサブルーチンとして、昔ながらの方法でpost_httpsを呼び出してみてください。
「/ path / to / key」の後に余分なコンマがあります
所属していません StackOverflow