¿Cómo puedo enviar una solicitud HTTPS en Perl sin LWP :: UserAgent o HTTP :: Request?

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

  •  22-07-2019
  •  | 
  •  

Pregunta

¿Necesito enviar una solicitud HTTPS sin usar LWP :: UserAgent o HTTP :: request? ¿Cuál es otro método para hacerlo? Esta es la solicitud que debo enviar:

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
¿Fue útil?

Solución 3

Gracias a la referencia del paquete de Sinan Ünür pude lograr lo que necesitaba:

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;

Otros consejos

¿Está buscando README.SSL ?

  

El soporte de cifrado se obtiene a través de   el uso de Crypt :: SSLeay o    IO :: Socket :: SSL , que pueden ser ambos   encontrado de CPAN. Mientras que libwww-perl tiene   " plug-and-play " soporte para ambos   estos módulos (a partir de v5.45), el   El módulo recomendado para usar es    Crypt :: SSLeay .

Busque una biblioteca SSL y abra el socket usted mismo, luego envíe los datos.

Sin embargo, recomendaría contra eso. Mucho mejor hacerlo correctamente a través de uno de los módulos que mencionó al alimentar al módulo con los parámetros correctos para que haga la solicitud que desee.

No estoy seguro de que sea inteligente darnos su identificación de solicitud de PayPal y otros datos ... Los datos exactos que se envían al servidor no son realmente relevantes aquí; lo que más importa es el tipo de error que obtiene cuando usa LWP :: UserAgent. Usted indicó en una pregunta anterior que estaba recibiendo errores HTTP 500, lo que sugiere que hay algo mal con el destinatario, o que está enviando datos que están siendo rechazados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top