LWP :: UserAgentまたはHTTP :: RequestなしでHTTPSリクエストをPerlで送信するにはどうすればよいですか?

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現在)、   使用する推奨モジュールは    Crypt :: SSLeay

SSLライブラリを調べて自分でソケットを開き、データを送信します。

しかし、それに対してはお勧めします。モジュールに正しいパラメーターを供給することで、あなたが言及したモジュールの1つを介して適切に行う方がはるかに良いので、それはあなたが望む要求をするでしょう。

PayPalリクエストIDとその他のデータを提供するのが賢明かどうかわかりません...サーバーに送信される正確なデータは、ここでは実際には関係ありません。さらに重要なのは、LWP :: UserAgentを使用するときに発生するエラーの種類です。前の質問で、受信者に何か問題があるか、拒否されているデータを送信していることを示唆するHTTP 500エラーが発生していることを示しました。

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