codeigniter — Извлечение данных из сообщения curl в Stack Overflow

Я пытаюсь отправить данные на 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>";

Но ничего не печатает. Я хочу получить данные публикации. Пожалуйста помоги мне с этим.

1

Решение

//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);

POST и получение данных JSON с использованием PHP cURL

1

Другие решения

Ваш письменный код

$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, что не представляется возможным с точки зрения безопасности.

1

Куда бы вы ни звонили postToURL() функция, вам нужно вывести результат.

Например:

$output = postToURL('Example', array());
echo $output;

Это потому что ты возврате вывод curl скорее выводит его.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector