Как я могу отправить HTTPS-запрос в Perl без LWP :: UserAgent или HTTP :: Request?

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

  •  22-07-2019
  •  | 
  •  

Вопрос

Мне нужно отправить 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, что говорит о том, что с получателем что-то не так, или вы отправляете данные, которые отклоняются.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top