使用cURL在CodeIgniter项目中调用控制器

时间:2017-03-14 14:13:21

标签: php codeigniter curl

好的,所以这个问题让我很烦恼。

我在[project_url] / admin / orderpicking / get_updated_statuses

的CodeIgniter项目中创建了一个控制器函数

函数名称:get_updated_statuses 控制器名称:Orderpicking.php 控制器位置:application / admin

控制器内部我只有

ob_start();
print_r('success');
file_put_contents('file.txt', ob_get_contents());
ob_end_clean();

确认我正在击中控制器。

当我直接从浏览器点击控制器时,文件会以“成功”作为内容创建。

当我使用来自另一个项目的cURL命中控制器时,没有任何反应,结果是一个空字符串(我现在不关心结果,但不再创建file.txt文件)。

调用控制器的代码如下:

$data = array('datetime'=>new DateTime());
        $header = array(
            'Identification:Portal::ReadAPI', // TODO config
            'Content-Type:application/x-www-form-urlencode'
        );
        $url = '[local instance]/admin/orderpicking/get_updated_statuses'; // TODO config

        $curlGetUpdatedItems = curl_init($url);
        /** CURL OPTIONS */
        curl_setopt($curlGetUpdatedItems, CURLOPT_POST, 1);
        curl_setopt($curlGetUpdatedItems, CURLOPT_POSTFIELDS, json_encode(serialize($data)));
        curl_setopt($curlGetUpdatedItems, CURLOPT_HTTPHEADER, $header);
        curl_setopt($curlGetUpdatedItems, CURLOPT_RETURNTRANSFER, true);
//        curl_setopt($curlGetUpdatedItems, CURLOPT_SSL_VERIFYPEER, true);
//        curl_setopt($curlGetUpdatedItems, CURLOPT_SSL_VERIFYHOST, 2);
//        curl_setopt($curlGetUpdatedItems, CURLOPT_CAINFO, $certificate_location);
        /** CURL OPTIONS */

        $result = curl_exec($curlGetUpdatedItems);

我在这里犯了什么明显的错误吗? 我将在以后制作门户网站https时添加证书,但直到那时我认为我不需要它?

非常欢迎任何帮助和/或建议!

-----更新-----

在var_dump'结果之后我注意到返回了一个布尔值true。 curl_error($curlGetUpdatedItems)返回一个空字符串。

1 个答案:

答案 0 :(得分:1)

你可以按步骤做到:

$data_string = http_build_query($data);

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($data));
curl_setopt($ch,CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);

$result = json_decode($result,true);

不知道是否需要标题,我认为默认已经是application / x-www-form-urlencode

id它不起作用,尝试更改数组中的$ data值。认为有帮助。 :)