Como posso enviar uma solicitação HTTPS em Perl sem LWP :: UserAgent ou HTTP :: Request?

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

  •  22-07-2019
  •  | 
  •  

Pergunta

Eu preciso enviar uma solicitação HTTPS sem utilizar LWP :: UserAgent ou HTTP :: pedido? O que é um outro método de fazê-lo? Este é o pedido que eu preciso 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
Foi útil?

Solução 3

Graças à referência pacote pelo Sinan Ünür eu era capaz de realizar o que eu precisava:

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;

Outras dicas

Você está procurando README.SSL ?

Suporte Encryption é obtida através o uso de Crypt :: SSLeay ou IO :: Socket :: SSL , que pode ser tanto encontrado do CPAN. Enquanto libwww-perl tem suporte "plug-and-play" para ambos estes módulos (a partir de v5.45), o módulo recomendada para uso é Crypt :: SSLeay .

Procure uma biblioteca de SSL e abrir o soquete-se, em seguida, enviar os dados.

Eu recomendo contra isso embora. Muito melhor para fazê-lo corretamente através de um dos módulos que você mencionou, alimentando o módulo os parâmetros corretos para que ele irá fazer o pedido que deseja.

Eu não tenho certeza que é inteligente para dar-nos o seu ID de pedido paypal e outros dados ... Os dados exatos de serem enviados para o servidor não é realmente relevante aqui; o que importa mais é o tipo de erro que você está recebendo quando você usa LWP :: UserAgent. Você indicou em uma pergunta anterior que você estava recebendo HTTP 500 erros, o que sugere que há algo errado com o destinatário, ou você está enviando dados que está sendo rejeitado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top