无法读取PHP-JSON输入中的调用距离矩阵
在我的应用程序中,我从mysql中提取数据并调用bing距离矩阵服务。虽然我可以使用postman等方法让调用正常工作,但我使用各种cURL方法和unirest尝试的任何方法都没有成功。我回来了 无法读取JSON输入 所有这些都表明,这就是我正在做的 这是我正在使用的一些JSON示例,它是$content无法读取PHP-JSON输入中的调用距离矩阵,php,json,bing-maps,unirest,Php,Json,Bing Maps,Unirest,在我的应用程序中,我从mysql中提取数据并调用bing距离矩阵服务。虽然我可以使用postman等方法让调用正常工作,但我使用各种cURL方法和unirest尝试的任何方法都没有成功。我回来了 无法读取JSON输入 所有这些都表明,这就是我正在做的 这是我正在使用的一些JSON示例,它是$content {"origins":{"latitude":"41.654570","longitude":"-71.49605"},"destinations":[{"latitude":"41.1725
{"origins":{"latitude":"41.654570","longitude":"-71.49605"},"destinations":[{"latitude":"41.172536","longitude":"-71.555274"},{"latitude":"41.18259","longitude":"-71.567168"},{"latitude":"41.341878","longitude":"-71.695282"},{"latitude":"41.356934","longitude":"-71.63798"},{"latitude":"41.361308","longitude":"-71.625706"},{"latitude":"41.347763","longitude":"-71.67328"},{"latitude":"41.373887","longitude":"-71.665345"},{"latitude":"41.488602","longitude":"-71.38332"},{"latitude":"41.493772","longitude":"-71.137993"},{"latitude":"41.486615","longitude":"-71.246164"}],"travelMode":"driving"}
它在JSONLint中传递得很好,在postman中也很有效
$content是在此基础上构建的$jsonbase
$jsonbase = array(
"origins" => [],
"destinations" => [],
"travelMode" => "driving",
);
这是我从mysql返回后使用的位
$url = "https://dev.virtualearth.net/REST/v1/Routes/DistanceMatrix";
$content = json_encode($jsonbase);
$headers = array('Content-Type' => 'application/json',
'Accept' => 'application/json',
'Content-Length' => strlen ($content),
'key' => 'THISISMYKEY');
$body = Unirest\Request\Body::Json($jsonbase);
$response = Unirest\Request::post($url, $headers, $body);
我一定是错过了什么,我一辈子都想不出来。在《邮递员》中,标题键的设置与此相同。对于正文,我选择类型为raw,内容为JSON。任何帮助或指导都将不胜感激。谢谢 通过聊天解决了这个问题,问题是API要求
origins
和destinations
是一个lat/lng数组,但仔细查看生成的JSONorigins
并不是因为它是原始数据中的单个值
因此,将单个origin
元组放入一个数组解决了这个问题,得到了这个JSON:
{
"origins": [{
"latitude": "41.654570",
"longitude": "-71.49605"
}],
"destinations": [
{
"latitude": "41.172536",
"longitude": "-71.555274"
},
{
"latitude": "41.18259",
"longitude": "-71.567168"
},
{
"latitude": "41.341878",
"longitude": "-71.695282"
},
{
"latitude": "41.356934",
"longitude": "-71.63798"
},
{
"latitude": "41.361308",
"longitude": "-71.625706"
},
{
"latitude": "41.347763",
"longitude": "-71.67328"
},
{
"latitude": "41.373887",
"longitude": "-71.665345"
},
{
"latitude": "41.488602",
"longitude": "-71.38332"
},
{
"latitude": "41.493772",
"longitude": "-71.137993"
},
{
"latitude": "41.486615",
"longitude": "-71.246164"
}
],
"travelMode": "driving"
}
上面的JSON到底是什么
$jsonbase
或$content
或$body
,您是否确定json\u encode
和“…\body::json”的结果相同?如果不使用其中一个的strlen,实际发送另一个可能会有问题,导致JSON不完整。对不起,上面的JSON是$jsonbase。当我打印(json编码($jsonbase))和打印($body)时,内容是相同的。是的,但是,$jsonbase
已经是json了,如果您(再次)将其编码为json,它将不再有用。。。您应该只将$jsonbase
发送到服务。但它不是…'$jsonbase=array(“起点”=>[],“目的地”=>[],“旅行模式”=>“驾驶”;”但是,$jsonbase
不是上面显示的JSON:D,这就是我问的原因。那么我猜上面的JSON实际上是$content
?