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

ulydmbyx  于 2023-09-28  发布在  其他
关注(0)|答案(2)|浏览(75)

下面的函数将curl删除请求传输到API,并将响应返回给PHP。
该API为所有请求(get、post、put和delete)返回一个JSON数组,除了delete请求之外,所有请求都可以正常工作。
下面的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数组)总是在函数完成后被转储到浏览器-这不是我想要的。
如果我输入echo count($html),返回结果的正确长度将打印出来,$html数组工作正常,但是我似乎无法阻止它自动转储到屏幕上。
其他任何curl函数都不会发生这种情况,它们只是按预期工作。
问题:
这是正常的行为吗?如何防止json转储到屏幕上?
PS使用Codeigniter和Phil Sturgeon的REST服务器

nzkunb0c

nzkunb0c1#

您应该尝试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服务器。

wz3gfoph

wz3gfoph2#

我也遇到了同样的问题,但添加代码:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

化解了

相关问题