2015-04-14 2 views
1

Мне нужно сделать POST-вызов для сохранения данных на сервере. Для некоторых серверов сервер требует JSON-Encoded List. Однако, когда я делаю почтовый вызов, и я смотрю на $result, данные «JSON-Encoded List» не сохраняются, а элементы - null. Однако вызов POST выполнен успешно.POST-вызов работает неправильно?

$items = json_encode((array(
    "name" => $_GET['title'], 
    "sub_type" => $subtype_fd, 
    "calories" => intval($_GET['calories']), 
    "carbohydrate" => floatval($_GET['carbohydrate']), 
    "cholesterol" => floatval($_GET['cholesterol']), 
    "fiber" => floatval($_GET['fiber']), 
    "protein" => floatval($_GET['protein']), 
    "saturated_fat" => floatval($_GET['saturated_fat']), 
    "unsaturated_fat" => floatval($_GET['unsaturated_fat']), 
    "sodium" => floatval($_GET['sodium']), 
    "sugar" => floatval($_GET['sugar']) 
))); 

var_dump($items); 

$data = array('note' => $_GET['title'], 'sub_type' => $subtype_bld, 'items' => $items); 

$options = array(
    'http' => array(
     "header" => "Content-Type: application/x-www-form-urlencoded\r\nAuthorization: Bearer {$_COOKIE['access_token']}\r\n", 
     'method' => 'POST', 
     'content' => $data 
    ), 
); 

$context = stream_context_create($options); 
$result = file_get_contents($url, false, $context); 

информации от API

Host: jawbone.com 
Accept: application/json 
Content-Type: multipart/form-data 

ответ

2

content варианта контекста должен быть строкой, вы предоставляете массив. Предполагается, что это строка в формате с кодировкой URL. Функция http_build_str преобразует ассоциативный массив в этот формат. Так что используйте:

'content' => http_build_str($data) 
+0

Теперь я получил сообщение об ошибке: (!) Фатальная ошибка: Вызов неопределенной функции http_build_str() – user3549524

+0

См пользователя примечание в конце http://php.net/manual/en/function .http-build-str.php – Barmar

+0

Означает ли это, что мне нужно добавить новый \ http \ QueryString(); наверху php? – user3549524

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