我在gcloud中设置了一个codeigniter项目,我写了一个简单的帖子并得到这样的控制器:
public function test2() {
echo "hello"
}
public function test() {
$input_data = json_decode(trim(file_get_contents('php://input')), true);
print_r($input_data);
}
当你在这里测试时
当我在浏览器中调用它时,似乎得到/ test的响应,但是当通过邮递员或CURL调用它时它不起作用!
所以我使用此代码对本地主机和服务器进行CURL测试
<?php
post();
echo "<hr>";
get();
function post() {
$ch = curl_init();
$url1 = 'https://rbm2018-123.appspot.com/api/member/test';
$url2 = 'localhost/nrb-website/api/member/test';
$payload = `{
"qwerty": 1234,
"comeon": "sdgsdkjsdfsdgf"
}`;
curl_setopt_array($ch, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $url2,
CURLOPT_HTTPHEADER => array('Content-Type:application/json'),
CURLOPT_USERAGENT => 'Codular Sample cURL Request',
CURLOPT_POSTFIELDS => $payload
));
$result = curl_exec($ch);
curl_close($ch);
print_r($result);
}
function get() {
$ch = curl_init();
$url1 = 'https://rbm2018-123.appspot.com/api/member/test2';
$url2 = 'localhost/nrb-website/api/member/test2';
curl_setopt_array($ch, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $url2,
CURLOPT_USERAGENT => 'Codular Sample cURL Request'
));
$result = curl_exec($ch);
curl_close($ch);
print_r($result);
}
?>
url1和url2的CURL帖子没有任何结果 对于url2的CURL获取结果但是url2没有响应。
答案 0 :(得分:0)
看起来CodeIgniter会阻止&#34; file_get_contents(&#39; php://输入&#39;)&#34; -request,请查看此https://www.codeigniter.com/user_guide/libraries/input.html#using-the-php-input-stream。
同时检查他们可以帮助的PHP错误,我在开发服务器上使用了大部分时间display_errors = true。
我希望这有助于你
答案 1 :(得分:0)
我发现了,我需要添加
google_app_engine.enable_curl_lite = "1"
到我的应用程序根目录中的php.ini以使其正常工作
答案 2 :(得分:0)
注意:您错过了在url2中添加http://检查