Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法读取PHP-JSON输入中的调用距离矩阵_Php_Json_Bing Maps_Unirest - Fatal编程技术网

无法读取PHP-JSON输入中的调用距离矩阵

无法读取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

在我的应用程序中,我从mysql中提取数据并调用bing距离矩阵服务。虽然我可以使用postman等方法让调用正常工作,但我使用各种cURL方法和unirest尝试的任何方法都没有成功。我回来了

无法读取JSON输入

所有这些都表明,这就是我正在做的

这是我正在使用的一些JSON示例,它是$content

{"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数组,但仔细查看生成的JSON
origins
并不是因为它是原始数据中的单个值

因此,将单个
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