以下函数将curl删除请求传递给api,并将响应返回给php。
api为所有请求(get,post,put和delete)返回一个json数组,除了删除请求之外的一切都可以正常工作。
以下curl函数似乎无法正常工作:
function curl_delete($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_URL,$url);
$result = curl_exec($ch);
curl_close($ch);
return $result; // <-- Function ALWAYS returns whether this is here or not??!..
}
这就是我从PHP调用函数的方法:
// [DELETE API URL]:
$url = 'http://localhost/website/api/users/user/id/123';
$html = json_decode(curl_delete($url), true);
如果查看函数(上图),无论是否包含return语句(在函数末尾),curl调用的结果(jsonified数组)总是在函数后被转储到浏览器已经完成 - 这不是我想要的。
如果我说回显计数($ html),则会打印返回结果的正确长度,并且$ html数组工作正常,但我似乎无法阻止它自动转储到屏幕上。 / p>
任何其他curl函数都不会发生这种情况,只是按预期工作。
问题:
这是正常行为吗?如何防止json转储到屏幕上?
PS使用Codeigniter&amp; Phil Sturgeon的REST服务器
答案 0 :(得分:1)
您应该尝试Phil Sturgeon's cURL library for Codeigniter及其方法simple_delete()
:
$this->load->library('curl');
$url = 'http://localhost/website/api/users/user/id/123';
$response = $this->curl->simple_delete($url);
$html = json_decode($response, TRUE);
如果它无法解决您的问题,可能您需要仔细查看您的REST服务器。