質問

私は支払いゲートウェイとインターフェースをとっていますが、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」の後に余分なコンマがあります

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top