PHP发布请求发送

时间:2017-02-23 12:03:56

标签: php codeigniter curl post

我使用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);

1 个答案:

答案 0 :(得分:0)

在不知道错误的情况下,您的诊断有点难以诊断,但很可能是您的请求被重定向(302或301状态代码)。这会丢掉帖子数据。

如果请求没有以斜杠结尾,我的.htaccess会重定向请求,所以也许尝试在网址末尾添加斜杠?