【发布时间】:2015-04-12 18:50:12
【问题描述】:
我已经能够使用这种格式执行解析以将数据发布到我的 api:
工作样本:
<?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);
?>
如您所见,我在 $data 数组中使用了一个字符串,因此我试图从表单中捕获信息并将其传递给 $data 数组,但如果我使用 $_GET 或 $_POST 我最终得到一条错误消息:
{ "success": false, "errorMessage": "请求内容格式错误:\n预期字符串为 JsString,但得到了 null", "errorCode": "BadRequest" }
我做错了什么?
【问题讨论】:
-
请发布 print_r($data_string = json_encode($data)); 的输出
-
不明白你的意思?如果谈论结果是什么,你可以在这里看到工作:mygeofy.com/api/add_geo.php
-
嗨,想知道传递了哪些值以及传递给$data_string的json_encode函数的字符串值。所以换行: $data_string = json_encode($data);通过 print_r($data_string = json_encode($data));die;并在此处粘贴输出作为评论。
-
错误消息明确指出问题出在请求内容中,所以想看看推送到服务的内容。
-
我试图传递的数据来自表单域: