Como posso enviar uma solicitação HTTPS em Perl sem LWP :: UserAgent ou HTTP :: Request?
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
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.