在我成功发出POST请求并获取网络服务中的值之后我就建立了。我遇到了有关Put请求的问题。我设法制作了Put Request,我发送了一个包含name和id的数组,用于更新目的:
curl_setopt($ic, CURLOPT_POSTFIELDS, http_build_query($data));
但是当我尝试使用$_POST['id']
获取发送的id时,我得到了未定义的索引错误,我print_r($ _ POST)并且它是空的。现在我不相信PUT的超级全局阵列就像POST一样,即使它存在,我也不认为有:
curl_setopt($ic, CURLOPT_PUTFIELDS, http_build_query($data));
你在卷曲中遇到过类似的错误吗?任何的想法?
要查看我之前关于帖子请求的帖子,以便更好地了解我尝试做的事情,here
答案 0 :(得分:3)
试试这个
curl_setopt($ic, CURLOPT_PUTFIELDS, json_encode($data));
并通过
获取$array_get = json_decode(file_get_contents('php://input'));
答案 1 :(得分:2)
仅$_POST
的{{1}};
您使用method=post
,因此method=put
为空。
你可以得到这样的putdata:
$_POST
答案 2 :(得分:2)
使用 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);
答案 3 :(得分:0)
这是发送PUT请求的秘诀:
curl_setopt($ch, CURLOPT_POST, true); // <-- NOTE this is POST
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); // <-- NOTE this is PUT
完整示例:
$vals = array("email" => "hi@example.com", "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;