lwp :: userAgent 또는 http :: request가없는 Perl에서 HTTPS 요청을 어떻게 보낼 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1228572

  •  22-07-2019
  •  | 
  •  

문제

lwp :: userAgent 또는 http :: request를 사용하지 않고 https 요청을 보내야합니까? 그렇게하는 또 다른 방법은 무엇입니까? 이것이 제가 보내야 할 요청입니다.

POST https://payflowpro.paypal.com/
Connection: close
Host: payflowpro.paypal.com
Content-Length: 181
Content-Type: text/namevalue
X-VPS-CLIENT-TIMEOUT: 30
X-VPS-REQUEST-ID: 1249403513SNOID
X-VPS-VIT-INTEGRATION-PRODUCT: Product
X-VPS-VIT-INTEGRATION-VERSION: 4.0
X-VPS-VIT-OS-NAME: linux
X-VPS-VIT-OS-VERSION: 2.6.16-gentoo-r13
X-VPS-VIT-RUNTIME-VERSION: 5.008007

EXPDATE[4]=1011&AMT[6]=100.01&ACCT[16]=4111111111111111&TENDER[1]=C&TAXAMT[4]=0.00&PARTNER[8]=******&PWD[9]=******&VENDOR[6]=******&USER[6]=******&TRXTYPE[1]=S&VERBOSITY=MEDIUM
도움이 되었습니까?

해결책 3

Sinan ünür의 패키지 참조 덕분에 필요한 것을 달성 할 수있었습니다.

my $host = 'pilot-payflowpro.paypal.com';
my $port = 443;
my $sock = IO::Socket::SSL->new("$host:$port") || die $!;

my $req = 'EXPDATE[4]=1011&AMT[6]=100.01&ACCT[16]=4111111111111111&TENDER[1]=C&TAXAMT[4]=0.00&PARTNER[8]=*****&PWD[9]=******&VENDOR[6]=*****&USER[6]=******&TRXTYPE[1]=S&VERBOSITY=MEDIUM';

print $sock "POST https://$host/ HTTPS/1.1\r\n";
print $sock "Connection: close", "\r\n";
print $sock "Host: ", $host, "\r\n";
print $sock "Content-length: ", length $req, "\r\n";
print $sock "Content-type: text/namevalue\r\n";
print $sock "X-VPS-CLIENT-TIMEOUT: 30", "\r\n";
print $sock "X-VPS-REQUEST-ID: 1249403513SNOID", "\r\n";
print $sock "X-VPS-VIT-INTEGRATION-PRODUCT: Product", "\r\n";
print $sock "X-VPS-VIT-INTEGRATION-VERSION: 4.0", "\r\n";
print $sock "X-VPS-VIT-OS-NAME: linux", "\r\n";
print $sock "X-VPS-VIT-OS-VERSION: 2.6.16-gentoo-r13", "\r\n";
print $sock "X-VPS-VIT-RUNTIME-VERSION: 5.008007", "\r\n\r\n";
print $sock $req, "\r\n\r\n";

print while <$sock>;

close $sock;

다른 팁

를 찾습니까 readme.ssl?

암호화 지원은 사용을 통해 얻습니다 crypt :: ssleay 또는 io :: socket :: ssl, CPAN에서 찾을 수 있습니다. 하는 동안 libwww-perl 이 두 모듈 모두에 대한 "플러그 앤 플레이"지원이 있으며 (v5.45 기준), 사용할 권장 모듈은 IS입니다. crypt :: ssleay.

SSL 라이브러리를 찾아 소켓을 직접 열린 다음 데이터를 보냅니다.

그래도 나는 그것을 추천합니다. 모듈에 올바른 매개 변수를 공급하여 언급 한 모듈 중 하나를 통해 올바르게 수행하는 것이 훨씬 좋습니다.

PayPal 요청 ID 및 기타 데이터를 제공하는 것이 현명한지 확실하지 않습니다 ... 서버로 전송되는 정확한 데이터는 여기서는 관련이 없습니다. 더 중요한 것은 lwp :: useragent를 사용할 때 얻는 오류의 유형입니다. 이전 질문에 HTTP 500 오류가 발생했다고 표시했습니다. 이는 수신자에게 문제가 있거나 거부되는 데이터를 보내고 있음을 시사합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top