문제

저는 결제 게이트웨이와 인터페이스하고 있는데 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처럼 호출하는 것이 빠르지만 보기 흉한 수정이 될 수 있습니다.

다른 팁

문서가 잘못되었습니다. 내 사본 (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