Curl删除功能转储json到浏览器-如何修复



下面的函数将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);

如果你看一下上面的函数,不管我是否包含返回语句(在函数的末尾),curl调用的结果(json化的数组)总是在函数完成后被转储到浏览器中——这不是我想要的。

如果我输入echo count($html),返回结果的正确长度将打印出来,并且$html数组工作正常,但是我似乎无法阻止它自动转储到屏幕上。

这不会发生在任何其他curl函数中,它们只是按预期工作。

问题:

这是正常行为吗?如何防止json转储到屏幕上?

PS使用Codeigniter &Phil Sturgeon的REST服务器

你应该试试Phil Sturgeon的cURL库和它的方法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服务器。

最新更新