Параметры записи curl PHP не передаются на сервер - PullRequest
1 голос
/ 02 июня 2010
<?php
$data = array('name' => 'Ross', 'php_master' => true);


$url="http://localhost/test.php";
$handle = curl_init($url);
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
curl_exec($handle);
?>

Переменная $_POST на стороне сервера пуста. Я также попытался использовать сервлет Java; request.getParameterNames() также пусто. Почему параметры сообщения теряются?

Ответы [ 2 ]

0 голосов
/ 03 июня 2010

Если вы отправите массив в POSTFIELDS, он будет опубликован как multipart / form-data. Я только что попробовал ваш скрипт и могу получить параметры в $ _POST.

Похоже, ваш сервер слишком старый или не настроен для поддержки этой кодировки.

Вот проводная трассировка,

POST /test HTTP/1.1^M
Host: localhost^M
Accept: */*^M
Content-Length: 243^M
Expect: 100-continue^M
Content-Type: multipart/form-data; boundary=----------------------------b05745ba31db^M
^M
HTTP/1.1 100 Continue^M
^M
------------------------------b05745ba31db^M
Content-Disposition: form-data; name="name"^M
^M
Ross^M
------------------------------b05745ba31db^M
Content-Disposition: form-data; name="php_master"^M
^M
1^M
------------------------------b05745ba31db--^M
HTTP/1.1 200 OK^M
Date: Wed, 02 Jun 2010 20:37:57 GMT^M
Server: Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.7l DAV/2 PHP/5.2.12^M
X-Powered-By: PHP/5.2.12^M
Set-Cookie: ZDEDebuggerPresent=php,phtml,php3; path=/^M
Transfer-Encoding: chunked^M
Content-Type: text/html^M
0 голосов
/ 02 июня 2010

вам нужно преобразовать массив $ data в строку пар ключ / значение в кодировке url:

$data = 'name=Ross&php_master=true';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...