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처럼 호출하는 것이 빠르지만 보기 흉한 수정이 될 수 있습니다.
다른 팁
문서가 잘못되었습니다. 내 사본 (net :: ssleay 1.04)에 post_https는 당신이 인용 한 예제와 함께 문서에 표시되지만 최대 6 개의 인수를 취하도록 선언됩니다.
sub post_https ($$$;***) { do_httpx2(POST => 1, @_) }
어떻게 작동하는지 아직 모르겠습니다.
편집 : & post_https (...)를 사용하는 서브 루틴으로 Post_https를 구식 방식으로 호출하십시오.
'/path/to/key'후에 추가 쉼표가 있습니다.
제휴하지 않습니다 StackOverflow