Comment puis-je envoyer une demande HTTPS en Perl sans LWP :: UserAgent ou HTTP :: Request?
Question
Je dois envoyer une demande HTTPS sans utiliser LWP :: UserAgent ou HTTP :: request? Quelle est une autre méthode pour le faire? Voici la demande que je dois envoyer:
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
La solution 3
Grâce à la référence du paquet par Sinan & # 220; n & 258, j'ai pu accomplir ce dont j'avais besoin:
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;
Autres conseils
Recherchez-vous README.SSL ?
La prise en charge du chiffrement est obtenue via l'utilisation de Crypt :: SSLeay ou IO :: Socket :: SSL , qui peuvent être tous deux trouvé de CPAN. libwww-perl "plug-and-play" soutien pour les deux ces modules (à partir de v5.45), le module recommandé à utiliser est Crypt :: SSLeay .
Recherchez une bibliothèque SSL et ouvrez vous-même le socket, puis envoyez les données.
Je recommanderais contre cela cependant. Il est bien mieux de le faire correctement via l’un des modules que vous avez mentionné en fournissant au module les paramètres corrects pour que celui-ci réponde à la demande souhaitée.
Je ne suis pas sûr qu'il soit judicieux de nous fournir votre identifiant de demande paypal et d'autres données ... Les données exactes envoyées au serveur ne sont pas vraiment pertinentes ici; Ce qui compte le plus, c'est le type d'erreur que vous obtenez lorsque vous utilisez LWP :: UserAgent. Vous avez indiqué dans une question précédente que vous obteniez des erreurs HTTP 500, ce qui donne à penser que le destinataire a un problème ou que vous envoyez des données en cours de rejet.