Curl Delete函数将json转储到浏览器 - 如何修复

时间:2013-05-25 20:21:32

标签: codeigniter api rest curl

以下函数将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服务器

1 个答案:

答案 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服务器。