после того, как мне удалось сделать запрос 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 у тебя вообще была похожая ошибка? любая идея?
Чтобы взглянуть на мой предыдущий пост, касающийся почтового запроса, чтобы лучше понять, что я пытаюсь сделать, это Вот
$_POST
только для method=post
;
Ты используешь method=put
, Итак $_POST
пустой.
Вы можете получить данные как:
$_PUT = array();
if('PUT' == $_SERVER['REQUEST_METHOD']){
parse_str(file_get_contents('php://input'), $_PUT);
}
Попробуй это
curl_setopt($ic, CURLOPT_PUTFIELDS, json_encode($data));
и возьми
$array_get = json_decode(file_get_contents('php://input'));
использовать этот 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);
Это секрет отправки запроса 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;