我正试图通过使用带有codeigniter的curl将数据发送到url。我已经成功地实现了如下发送数据的代码。
function postToURL($reg_no, $data)
{
$url = 'http://localhost/abcSystem/Web_data/viewPage';
$send_array = array(
'reg_no' =>$reg_no,
'data' =>$data,
);
$fields_string = http_build_query($send_array);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 600);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_REFERER, $url);
$post_data = 'json='.urlencode(json_encode($send_array));
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$output = curl_exec($ch);
if (curl_errno($ch)) {
die('Couldn't send request: ' . curl_error($ch));
} else {
$resultStatus = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($resultStatus == 200) {
print_r('success'); // this is outputting
return $output;
} else {
die('Request failed: HTTP status code: ' . $resultStatus);
}
}
curl_close($ch);
}
输出是成功。我想看看这篇文章的数据是否可以检索。所以我尝试将上面的url控制器文件更改为如下。
$fp = fopen('php://input', 'r');
$rawData = stream_get_contents($fp);
echo "<pre>";
print_r($rawData);
echo "</pre>";
但没有什么是印刷品。我想得到发布的数据。请帮我一下。
您的书面代码
$fp = fopen('php://input', 'r');
$rawData = stream_get_contents($fp);
echo "<pre>";
print_r($rawData);
echo "</pre>";
不是打印或捕获已过帐数据。因为您处理的是当前页面PHP输入流,而您在其他URL上发布数据。所以你需要做的就是把发布的数据放在文件中。在$output=curl_exec($ch(之后使用以下代码
file_put_contents("posted_data.txt", $post_data );
这样你就可以在Posted_data.txt文件中写下你的每一篇文章——确保你给予了适当的文件权限。如果您想跟踪每个POST,而不仅仅是使文件名动态,这样每个API Call就可以编写日志。
另一种选择是将$post_data保存在DATABASE中——从安全角度来看,这是不建议的。
无论何时调用postToURL()
函数,都需要输出其结果。
例如:
$output = postToURL('Example', array());
echo $output;
这是因为您返回卷曲输出,而不是输出它。