Come posso inviare una richiesta HTTPS in Perl senza LWP :: UserAgent o HTTP :: Request?

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

  •  22-07-2019
  •  | 
  •  

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
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top