Извлечение данных из сообщения curl в PHP - PullRequest
0 голосов
/ 18 декабря 2018

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

Результат: success .Я хочу посмотреть, можно ли получить данные этого сообщения.Поэтому я попытался изменить указанный выше файл контроллера URL, как показано ниже.

<code>$fp = fopen('php://input', 'r');
$rawData = stream_get_contents($fp);
echo "<pre>";
print_r($rawData);
echo "
";

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

Ответы [ 3 ]

0 голосов
/ 18 декабря 2018

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

Например:

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

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

0 голосов
/ 18 декабря 2018
//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

0 голосов
/ 18 декабря 2018

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

<code>$fp = fopen('php://input', 'r');
$rawData = stream_get_contents($fp);
echo "<pre>";
print_r($rawData);
echo "
";

не предназначен для печати или захвата опубликованных данных. Потому что вы имеете дело с потоковой передачей текущей страницы PHP, тогда как вы публикуете данные в другомURL. Так что вам нужно просто поместить журнал опубликованных данных в файл. Используйте код ниже после $ output = curl_exec ($ ch)

file_put_contents("posted_data.txt", $post_data );

Таким образом, вы сможете написать каждыйсообщение в файле Файл Posted_data.txt - убедитесь, что вы правильно задали права доступа к файлу. Если вы хотите отслеживать каждый POST, чем просто динамически изменять имя файла, чтобы при вызове API он мог записывать журнал.

Другой вариантсохранить $ post_data в DATABASE, что не представляется возможным с точки зрения безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...