我使用PHP5.3和CodeIgniter框架,也使用TOAST - CodeIgniter单元测试库。
我需要测试我的控制器,它需要POST来进行变量传递。我尝试了cUrl和stream_context_create,都失败了。 (curl已启用)但是我可以使用具有相同正文数据的POSTMAN成功完成。所以,接收器运行良好,我的发送器有问题。
curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, 'http://localhost:8080/myApp/index.php?/systemAdministration/runScheduledETL');
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_POST, 1);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, array('id' => $id));
$buffer = curl_exec($curl_handle);
curl_close($curl_handle);
另外,我试过了:
url = 'http://localhost:8080/myApp/index.php?/systemAdministration/runScheduledETL';
$data = array('id' => $id);
$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded",
'method' => 'POST',
'content' => http_build_query($data)
)
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
答案 0 :(得分:0)
在不知道错误的情况下,您的诊断有点难以诊断,但很可能是您的请求被重定向(302或301状态代码)。这会丢掉帖子数据。
如果请求没有以斜杠结尾,我的.htaccess会重定向请求,所以也许尝试在网址末尾添加斜杠?