Wie kann ich eine HTTPS-Anforderung in Perl ohne LWP :: Useragent oder HTTP :: Anfrage senden?
Frage
Ich brauche eine HTTPS-Anforderung zu senden, ohne LWP :: Useragent mit oder HTTP :: Anfrage? Was ist eine andere Methode, dies zu tun? Dies ist die Anfrage ich senden müssen:
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
Lösung 3
Dank Paket Referenz von Sinan Unur ich war in der Lage zu erreichen, was ich brauchte:
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;
Andere Tipps
Suchen Sie README.SSL ?
Verschlüsselungsunterstützung erhalten wird durch die Verwendung von Crypt :: SSLeay oder IO :: Socket :: SSL , die beide können sein von CPAN gefunden. Während libwww-perl hat "Plug-and-Play" Unterstützung sowohl von Diese Module (ab v5.45), der empfohlene Modul zu verwenden ist Crypt :: SSLeay .
eine SSL-Bibliothek nachschlagen und öffnen Sie die Buchse selbst, sendet dann die Daten in.
würde ich gegen diese allerdings empfehlen. Viel besser, es zu tun richtig über eines der Module, die Sie erwähnt durch das Modul die richtigen Parameter füttern, damit es die Anfrage Sie wünschen.
Ich bin nicht sicher, ob es klug ist, uns Ihre paypal Anforderungs-ID und andere Daten zu geben ... Die genauen Daten an den Server gesendet werden, ist nicht wirklich relevant hier; was zählt, ist mehr die Art der Fehler, den Sie bekommen, wenn Sie LWP :: Useragent verwenden. Sie haben angegeben, in einer früheren Frage, die Sie wurden HTTP 500 Fehler bekommen, die es vorschlägt, ist etwas falsch mit dem Empfänger, oder Sie senden die Daten, die abgelehnt wird.