Come posso inviare una richiesta HTTPS in Perl senza LWP :: UserAgent o HTTP :: Request?
Domanda
Devo inviare una richiesta HTTPS senza usare LWP :: UserAgent o HTTP :: request? Qual è un altro metodo per farlo? Questa è la richiesta che devo inviare:
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
Soluzione 3
Grazie al riferimento al pacchetto di Sinan Ünür sono stato in grado di realizzare ciò di cui avevo bisogno:
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;
Altri suggerimenti
Stai cercando README.SSL ?
Il supporto per la crittografia è ottenuto tramite l'uso di Crypt :: SSLeay o IO :: Socket :: SSL , che possono essere entrambi trovato da CPAN. Mentre libwww-perl ha & Quot; plug-and-play " supporto per entrambi questi moduli (dalla v5.45), il il modulo consigliato da usare è Crypt :: SSLeay .
Cerca una libreria SSL e apri tu stesso il socket, quindi invia i dati.
Lo sconsiglio comunque. Molto meglio farlo correttamente tramite uno dei moduli che hai citato fornendo al modulo i parametri corretti in modo che faccia la richiesta che desideri.
Non sono sicuro che ci stia fornendo il tuo ID di richiesta paypal e altri dati ... I dati esatti inviati al server non sono realmente rilevanti qui; ciò che conta di più è il tipo di errore che si verifica quando si utilizza LWP :: UserAgent. In una domanda precedente hai indicato che stai ricevendo errori HTTP 500, il che suggerisce che c'è qualcosa di sbagliato nel destinatario o che stai inviando dati che vengono rifiutati.