2015-04-12 1 views
0

Я был в состоянии выполнить синтаксический разбор, чтобы отправить данные на мой апи, используя этот формат:пасса HTML-формы данных в JSON PHP строку

Работы образца:

<?php 

$appId = 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'; 
$private_token = 'XXXXXXXXXXXXXXXXXXX'; 
$geo_post = "/api/v1/geofence/"; 

$name = "Home"; 
$latitude = 38.646322; 
$longitude = -121.185837; 
$radius = 50; 


$data = array(
    "name" => $name, 
    "location" => 
    array("latitude" => $latitude, "longitude" => $longitude), 
    "matchRange" => $radius 
); 

$data_string = json_encode($data);                     

$ch = curl_init(); 
$headers = array(
'Content-Type:application/json', 
'Authorization: Basic '. base64_encode($appId.":".$private_token) // <--- 
); 

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_URL, 'https://admin.plotprojects.com' . $geo_post);                    
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                  
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                  

$content = trim(curl_exec($ch)); 
curl_close($ch); 

//print_r($content); 

?> 

образца с сообщением об ошибке:

<?php 
if (isset($_REQUEST['add_new'])){ 

$appId = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; 
$private_token = 'XXXXXXXXXXXXXXXXXXXXXXX'; 
$geo_post = "/api/v1/geofence/"; 

$name = $_GET['db_geofencename']; 
$latitude = $_GET['db_latitude']; 
$longitude = $_GET['db_longitude']; 
$radius = $_GET['db_radius']; 


$data = array(
    "name" => $name, 
    "location" => 
    array("latitude" => $latitude, "longitude" => $longitude), 
    "matchRange" => $radius 
); 

$data_string = json_encode($data);                     

$ch = curl_init(); 
$headers = array(
'Content-Type:application/json', 
'Authorization: Basic '. base64_encode($appId.":".$private_token) // <--- 
); 

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_URL, 'https://admin.plotprojects.com' . $geo_post);                    
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                  
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                  

$content = trim(curl_exec($ch)); 
curl_close($ch); 

print_r($content); 

?> 

Как вы можете видеть, я использую строку в моем массиве $ данных, так что я пытаюсь захватить информацию из формы и передать его в массив данных $, но если я использую $ _GET или $ _POST i заканчивается сообщением об ошибке:

{ "успех" ложь "ErrorMessage": "Содержание запроса было уродливы: \ nExpected Строка в JsString, но получил нулевой", "ERRORCODE": "BadRequest"}

что это я» Неправильно?

+0

отправить сообщение print_r ($ data_string = json_encode ($ data)); – Pulkit

+0

не понимаю, что вы имеете в виду? если говорить о том, что происходит, вы можете увидеть рабочий здесь: http://www.mygeofy.com/api/add_geo.php – TrevTech

+0

привет, просто чтобы узнать, какие значения переданы и какое значение строки json_encode передается в $ data_string. Итак, измените строку: $ data_string = json_encode ($ data); by print_r ($ data_string = json_encode ($ data)); die; и вставьте здесь комментарий здесь. – Pulkit

ответ

0

Так что лучше всего я могу думать о преобразовании (тип cast) ваших $ широт и $ longitude в плавающие числа. Не зависеть от того, как автопиляция php автоматически вводится как-то внутри, она будет содержать ее как строку, и я думаю, что api хочет $ latitude и $ lon ... как плавающие числа, а не строки.

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