好的,所以这个问题让我很烦恼。
我在[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)
返回一个空字符串。
答案 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值。认为有帮助。 :)