Разместите запрос используя curl

после того, как мне удалось сделать запрос POST и получить значения в веб-сервисе, который я строю. У меня проблема с заявкой на размещение. Мне удалось сделать запрос на поставку, и я отправил массив, содержащий имя и идентификатор, для цели обновления следующим образом:

curl_setopt($ic, CURLOPT_POSTFIELDS, http_build_query($data));

Но когда я пытаюсь получить идентификатор, отправленный с помощью $_POST['id'] Я получаю неопределенную ошибку индекса, я напечатал_r ($ _ POST), и она пуста. Теперь я не верю, что существует супер глобальный массив для PUT, как для POST, и даже если он существует, я не думаю, что он есть:

curl_setopt($ic, CURLOPT_PUTFIELDS, http_build_query($data));

в curl у тебя вообще была похожая ошибка? любая идея?

Чтобы взглянуть на мой предыдущий пост, касающийся почтового запроса, чтобы лучше понять, что я пытаюсь сделать, это Вот

1

Решение

$_POST только для method=post;

Ты используешь method=put, Итак $_POST пустой.

Вы можете получить данные как:

$_PUT = array();
if('PUT' == $_SERVER['REQUEST_METHOD']){
parse_str(file_get_contents('php://input'), $_PUT);
}
2

Другие решения

Попробуй это

curl_setopt($ic, CURLOPT_PUTFIELDS, json_encode($data));

и возьми

$array_get = json_decode(file_get_contents('php://input'));
3

использовать этот CURLOPT_CUSTOMREQUEST = PUT а затем просто установить значения с CURLOPT_POSTFIELDS

или же
Вы можете использовать пользовательский заголовок CURLOPT_HTTPHEADER
например.

curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-HTTP-Method-Override: PUT'));

Сценарий ниже демонстрирует, как вы делаете запрос PUT.

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "url");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); // note the PUT here

curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_HEADER, true);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string)
));

// execute the request

$output = curl_exec($ch);

// close curl resource to free up system resources

curl_close($ch);
2

Это секрет отправки запроса PUT:

curl_setopt($ch, CURLOPT_POST, true);  // <-- NOTE this is POST
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); // <-- NOTE this is PUT

Полный пример:

$vals = array("email" => "[email protected]", "phone" => "12345");
$jsonData = json_encode($vals);

curl_setopt($ch, CURLOPT_POST, true);  // <-- NOTE this
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); // <-- NOTE this

//We want the result / output returned.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type:application/json',
'Content-Length:' . strlen($jsonData),
'X-Apikey:Any_other_header_value_goes_here'
));

//Our fields.
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);

//Execute the request.
$response = curl_exec($ch);

echo $response;
0
По вопросам рекламы [email protected]