2015-07-16 4 views
2

У меня есть ссылка api, которая отлично работает на терминале. Я пытаюсь использовать ту же ссылку api для извлечения данных с использованием CURL в php. Я попытался ниже код:используя CURL в php для извлечения данных из api

<?php 

// set up the curl resource 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 
//curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_URL, 'urlxxxxx'); 
// execute the request 

$output = curl_exec($ch); 

// output the profile information - includes the header 

echo "curl response is : <br> ".($output). PHP_EOL; 

// close curl resource to free up system resources 

curl_close($ch); 
?> 

, но я получаю ответ, как:

curl response is : { "error" : "JSON syntax error: malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before \"(end of string)\") at /usr/share/perl5/JSON.pm line 171.\n" }

Я новичок свернуться вести меня по вопросу для ее решения.

+0

У вас нет 'CURLOPT_POSTFIELDS' опции для отправки параметров. – Barmar

+0

Я не хочу отправлять какие-либо параметры, я просто хотел получить данные. –

+0

API ожидает параметров в формате JSON. Возможно, вам нужно отправить пустой массив или объект. – Barmar

ответ

1

Добавить:

curl_setopt($ch, CURLOPT_POSTFIELDS, "{}"); 

так что вы отправить пустой объект JSON в качестве параметра. Это эквивалент PHP:

-d "{}" 

из командной строки.

Чтобы добавить другой материал в данные сообщения, используйте json_encode.

$data = array('userId' => array(), 
       'user_list' => array("1", "2", "3", "4", "5", "6", "7", "8") 
      ); 
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data); 
+0

Как добавить этот формат ввода «array [{\ n \ tinteger: userID; \ n}] user_list \ n", как CURL_POSTFIELDS? –

+0

Используйте 'json_encode' для преобразования массива PHP в JSON. См. Обновленный ответ. – Barmar

+0

Вы можете привести пример. ? –

0

Вам необходимо либо установить метод «GET» путем удаления curl_setopt($ch, CURLOPT_POST, true);
Или поставлять действительный JSON curl_setopt($curl, CURLOPT_POSTFIELDS, "{}");

Смежные вопросы