首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当POSTing GeoJSON数据使用php时错误的请求

当POSTing GeoJSON数据使用php时错误的请求
EN

Stack Overflow用户
提问于 2018-07-11 16:21:34
回答 1查看 60关注 0票数 0

我有这段php代码,它将GeoJSON数据发送到一个名为AirMap的服务,以检索飞行UAS的相关规则集。

index.php

代码语言:javascript
复制
<?
$ch = curl_init();

$json_data = '"geometry":' + '{ "type": "Polygon",
    "coordinates": [
      [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ]
      ]
   }';

curl_setopt($ch, CURLOPT_URL, "https://api.airmap.com/rules/v1");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "$'{");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data); 

$headers = array();
$headers[] = "X-Api-Key: (removed)";
$headers[] = "Content-Type: application/json; charset=utf-8";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);


$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close ($ch);

echo "$result";
?>

每当我执行此代码时,页面都会显示

“错误请求”

index.php 2

代码语言:javascript
复制
<?
$ch = curl_init();

$json_data = '{ "type": "Polygon",
    "coordinates": [
      [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ]
      ]
   }';

curl_setopt($ch, CURLOPT_URL, "https://api.airmap.com/rules/v1");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "$'{");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data); 

$headers = array();
$headers[] = "X-Api-Key: (removed)";
$headers[] = "Content-Type: application/json; charset=utf-8";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);


$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close ($ch);

echo "$result";
?>

每当我执行该代码时,它都会显示

代码语言:javascript
复制
{"status":"fail","data":{"message":"parameter validation failed","data":[{"name":"geometry","message":"Invalid param"},{"name":"geometry","message":"A valid geometry must be included."},{"name":"type","message":"Parameter not allowed."},{"name":"coordinates","message":"Parameter not allowed."}]}}

我试着理解这是什么意思,但我现在只是走进了死胡同。文档(和错误代码)指出“几何”部分是必需的,这就是我添加它的原因。文档在https://developers.airmap.com/docs/rulesets上,我已经通过一个GeoJSON linter运行了GeoJSON,它通过了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-12 02:15:57

我联系了AirMap支持部门,他们帮了我大忙。因为它们需要一个额外的标志(几何体)与cURL请求一起传递,所以它们还需要一个左大括号和右大括号。因此,几何体部分将如下所示:

代码语言:javascript
复制
$json_data2 = '{"geometry": { "type": "Polygon", "coordinates": [ [ [ -118.37099075317383, 33.85505651142062 ], [ -118.37305068969727, 33.85502978214579 ], [ -118.37347984313963, 33.854673391015496 ], [ -118.37306141853333, 33.85231226221667 ], [ -118.37193489074707, 33.85174201755203 ], [ -118.36997151374815, 33.85176874785573 ], [ -118.36995005607605, 33.8528112231754 ], [ -118.37099075317383, 33.85505651142062 ] ] ] }}';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51280561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档