2

私は支払いゲートウェイと接続していますが、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',
);

なぜこのエラーが発生するのですか?

4

3 に答える 3

2

Net :: SSLeayの新しいバージョンには、古いバージョンにあるプロトタイプがありません。古いバージョンと新しいバージョンのソースを読むと、プロトタイプはバグだったと思います(それが呼び出すコードは、宣伝されているよりも多くの変数を処理できます)。

私がお勧めする解決策は、Net::SSLeayの新しいバージョンにアップグレードすることです。それが不可能な場合は、&post_httpsのように呼び出すと、すばやく、しかし醜い修正になる可能性があります。

于 2008-10-28T00:33:03.923 に答える
1

ドキュメントが正しくありません。私のコピー (Net::SSLeay 1.04) では、post_https は、引用した例とともにドキュメントに示されていますが、最大 6 つの引数を取るように宣言されています。

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

それを機能させる方法はまだわかりません。

編集: &post_https(...) を使用したサブルーチンとして、昔ながらの方法で post_https を呼び出してみてください。

于 2008-10-28T00:10:26.653 に答える
-2

「/path/to/key」の後に余分なコンマがあります

于 2008-10-28T00:11:11.253 に答える