Есть несколько проблем с вашим кодом.
Во-первых, вы бы использовали CURLOPT_HTTPHEADERS
, когда на самом деле это CURLOPT_HTTPHEADER
(без завершающего "S").Эта строка должна выглядеть следующим образом:
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
Далее, Google не хочет, чтобы вы передавали имя параметра, просто значение.Другое дело, что $jsonpost
- это уже JSON, поэтому нет необходимости вызывать json_encode
.Строка должна выглядеть следующим образом:
curl_setopt($ch, CURLOPT_POSTFIELDS, $fieldString);
Для получения дополнительной информации ознакомьтесь с документацией Google: http://code.google.com/apis/maps/documentation/places/#adding_a_place.
Ваш полный код, исправленный, проверенный и работающий:
<?php
function ProcessCurl($URL, $fieldString){ //Initiate Curl request and send back the result
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
//curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fieldString);
$resulta = curl_exec ($ch);
if (curl_errno($ch)) {
print curl_error($ch);
} else {
curl_close($ch);
}
echo $resulta;
}
$jsonpost = '{
"location": {
"lat": -33.8669710,
"lng": 151.1958750
},
"accuracy": 50,
"name": "Daves Test!",
"types": ["shoe_store"],
"language": "en-AU"
}';
$url = "https://maps.googleapis.com/maps/api/place/add/json?sensor=false&key=";
$results = ProcessCurl ($url, $jsonpost);
echo $results."<BR>";