Кто-нибудь знает, почему следующий код не будет отправлять данные POST из объекта WWW :: Curl :: Form в теле запроса?
#!/usr/bin/perl
use strict;
use warnings;
use WWW::Curl::Easy;
use WWW::Curl::Form;
my $curl = new WWW::Curl::Easy();
$curl->setopt(CURLOPT_VERBOSE, 1);
$curl->setopt(CURLOPT_NOSIGNAL, 1);
$curl->setopt(CURLOPT_HEADER, 1);
$curl->setopt(CURLOPT_TIMEOUT, 10);
$curl->setopt(CURLOPT_URL, 'http://localhost/post_test.php');
my $curlf = new WWW::Curl::Form();
$curlf->formadd('a','b');
$curlf->formadd('c','d');
$curlf->formadd('e','f');
$curlf->formadd('g','h');
$curlf->formadd('i','j');
$curl->setopt(CURLOPT_HTTPPOST, $curlf);
my $resp = '';
open(my $resp_fh, ">", \$resp);
$curl->setopt(CURLOPT_WRITEDATA, $resp_fh);
my $retcode = $curl->perform();
die($retcode) if ($retcode != 0);
print $resp;
Это запрос POST, который я вижу (как в подробном выводе, так и через Wireshark):
POST /post_test.php HTTP/1.1
Host: localhost
Accept: */*
Content-Length: 0
Как вы можете видеть, Content-Type отсутствует, Content-Length равен 0, а данные в теле отсутствуют.
Это в Debian с использованием libcurl3 7.21.0-2 и libwww-curl-perl 4.12-1.