Проблема с отправкой объекта JSON через POST в Google Gears - PullRequest
0 голосов
/ 19 апреля 2011

Google Gears предоставляет API для определения географического местоположения, который может получать информацию LAC-CELLId и предоставлять данные в длинном формате. API подробно здесь: Geolocation API Я использую PHP. Вот код, который я написал:

<?php
$urlstring="http://www.google.com/loc/json";
$ch=curl_init($urlstring);

$cell_towers = array();
$row=new stdClass();
$row->location_area_code=3311;
$row->mobile_network_code=71;
$row->cell_id=32751;
$row->mobile_country_code=404;
$cell_towers[]=$row;    
$param = array(
      'host'=> 'localhost',
      'version' => '1.1.0', 
      'request_address' => true,
      'cell_towers' => $cell_towers
    );

$param_json=json_encode($param);    
//echo $param_json."<br />";
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS,urlencode($param_json));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("application/jsonrequest"));
$result=curl_exec($ch);
echo $result;

?>

Я получаю ответ «Ошибка синтаксического анализа JSON». Что я делаю не так?

Ответы [ 2 ]

3 голосов
/ 19 апреля 2011

Не используйте urlencode. Тела application / json никогда не кодируются.

0 голосов
/ 19 апреля 2011

Вы уверены, что используете правильный тип приложения?Их API использует: application / json

...