Как я могу отправить HTTPS-запрос в Perl без LWP :: UserAgent или HTTP :: Request?
Вопрос
Мне нужно отправить HTTPS-запрос без использования LWP :: UserAgent или HTTP :: request? Каков еще один способ сделать это? Это запрос, который мне нужно отправить:
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
Решение 3
Благодаря справочному пакету от Sinan'n'n &r я смог выполнить то, что мне было нужно:
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;
Другие советы
Вы ищете README.SSL ? р>
Поддержка шифрования получается через использование Crypt :: SSLeay или IO :: Socket :: SSL , которые могут быть оба найдено из CPAN. В то время как libwww-perl имеет & Quot; подключи и работай & Quot; поддержка обоих эти модули (по состоянию на v5.45), рекомендуемый модуль для использования Crypt :: SSLeay .
Найдите библиотеку SSL, откройте сокет и отправьте данные.
Я бы порекомендовал против этого, хотя. Намного лучше сделать это правильно с помощью одного из упомянутых вами модулей, указав в модуле правильные параметры, чтобы он выполнял ваш запрос.
Я не уверен, что было бы разумно предоставлять нам ваш идентификатор PayPal-запроса и другие данные ... Точные данные, отправляемые на сервер, на самом деле не имеют значения; более важным является тип ошибки, которую вы получаете, когда используете LWP :: UserAgent. В предыдущем вопросе вы указали, что получаете ошибки HTTP 500, что говорит о том, что с получателем что-то не так, или вы отправляете данные, которые отклоняются.