2016-03-06 1 views
0

Я работал с API google Vision.API Google Vision - недопустимая полезная нагрузка JSON. Не удалось разобрать номер

Когда я свернуться в командной строке это дает мне статус 200 OK с помощью следующей команды:

curl -v -k -s -H "Content-Type: application/json" https://vision.googleapis.com/v1/images:annotate?key=API_KEY --data-binary @base64.json 

Но когда я использую его с PHP, я получаю сообщение возврата:

{ «ошибка» : {"code": 400, "message": "Недопустимая полезная нагрузка JSON получена. Невозможно разобрать номер. \ n -------------------- \ n ^", "статус": "INVALID_ARGUMENT"}}

try { 
$post = array(
    'file' => '@base64.json' 
); 

$ch = curl_init('https://vision.googleapis.com/v1/images:annotate?key=API_KEY'); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    $content = curl_exec($ch); 

    if (FALSE === $content) 
     throw new Exception(curl_error($ch), curl_errno($ch)); 

    curl_close($ch); // Seems like good practice 
    return $content; 
} catch (Exception $e) { 
    trigger_error(sprintf(
     'Curl failed with error #%d: %s', 
     $e->getCode(), $e->getMessage()), 
     E_USER_ERROR); 
} 

Я следовал этому примеру:

https://cloud.google.com/vision/docs/getting-started

+0

Если я помню, что json нуждается в специальном json-заголовке в php ... найти ссылку ... –

ответ

1

Пожалуйста, установите следующие параметры:

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json', 
    'Content-Length: ' . strlen($data_string)) 
); 

http://alvinalexander.com/php/php-curl-examples-curl_setopt-json-rest-web-service

+0

Я решил ее, отправив json-данные вместо json-файла. Спасибо Владимиру за предложения. –

+0

Спасибо @ Владимир Рамик. это сработало для меня ... –

0

Я была такая же проблема. Моя проблема заключалась в символах новой строки, присутствующих в json-контенте. Как только я удалил все пробелы, я снова начал получать 200 секунд.

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