Я пытаюсь отправить данные на URL с помощью curl с codeigniter. Я успешно реализовал код для отправки данных, как показано ниже.
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>";
Но ничего не печатает. Я хочу получить данные публикации. Пожалуйста помоги мне с этим.
//API URL
$url = 'http://www.yourDomainNAme.com/api';
//create a new cURL resource
$ch = curl_init($url);
//setup request to send json via POST
$data = array(
'username' => 'infinityknow',
'password' => '9898123456789'
);
$payload = json_encode(array("user" => $data));
//attach encoded JSON string to the POST fields
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
//set the content type to application/json
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
//return response instead of outputting
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//execute the POST request
$result = curl_exec($ch);
//close cURL resource
curl_close($ch);
//Receive JSON POST Data using PHP
$data = json_decode(file_get_contents('php://input'), true);
Ваш письменный код
$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 );
Таким образом, вы сможете записать каждый пост в файл. Файл_Данные.txt — убедитесь, что вы даете правильное разрешение файла. Если вы хотите отслеживать каждый POST, то просто динамически изменяйте имя файла, чтобы при каждом вызове API можно было записывать журнал.
Другой вариант — сохранить $ post_data в DATABASE, что не представляется возможным с точки зрения безопасности.
Куда бы вы ни звонили postToURL()
функция, вам нужно вывести результат.
Например:
$output = postToURL('Example', array());
echo $output;
Это потому что ты возврате вывод curl скорее выводит его.