PHP CURL错误请求400-Mapquest Geocoding

sta*_*lew 5 php curl mapquest

我的网址是:

http://www.mapquestapi.com/geocoding/v1/batch?key=dNBvDLtTx85L3akdg8vBoHQXrWpDJSEI&location=HEBRON,KY,US&location=CINCINNATI,KY,US&location=CINCINNATI,KY,US&location=BEDFORD PARK,IL,US&location=BEDFORD PARK,IL,US&location=HODGKINS,IL,US&location=HODGKINS,IL,US&location=HODGKINS,IL,US&location=BALDWIN PARK,CA,US&location=BALDWIN PARK,CA,US&location=BALDWIN PARK,CA,US&location=,,US
Run Code Online (Sandbox Code Playgroud)

很长,但是应该符合https://www.mapquestapi.com/geocoding/

当我运行以下php代码时,谜团就揭开了帷幕:

$ch = curl_init();

curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_URL, $urlForGeocode);
curl_setopt($ch, CURLOPT_HTTPGET, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, TRUE);


$return = curl_exec ($ch);
curl_close ($ch);
echo( $return);


$output = shell_exec('curl ' . $urlForGeocode);
echo( $output);
Run Code Online (Sandbox Code Playgroud)

该变量$urlEncode保存上面url的值。第一个输出是:

<html><body><b>Http/1.1 Bad Request</b></body> </html>
Run Code Online (Sandbox Code Playgroud)

第二个请求的输出是:

{
    "info": {
        "statuscode": 400,
        "copyright": {
            "text": "\u00A9 2016 MapQuest, Inc.",
            "imageUrl": "http://api.mqcdn.com/res/mqlogo.gif",
            "imageAltText": "\u00A9 2016 MapQuest, Inc."
        },
        "messages": ["no 'json' parameter found"]
    },
    "options": {
        "maxResults": -1,
        "thumbMaps": true,
        "ignoreLatLngInput": false
    },
    "results": [{
        "providedLocation": {},
        "locations": []
    }]
}
Run Code Online (Sandbox Code Playgroud)

这两个不同的cURL请求基本上返回相同的东西。当我从本地计算机上的终端运行cURL时,也会返回400。

如果将URL放在浏览器中,我不会感到失望,它会以200状态码返回我要查找的数据。

浏览器获取请求和cURL有什么区别?

sta*_*lew 1

就像@Matt the ninja 和@chiliNut 建议的那样,我需要看看两个请求之间的区别。

唯一的区别是空间。我尝试运行urlencode()php函数以及rawurlencode()php函数,都没有影响结果。

这就是我现在使用的而不是 url 编码:

$urlForGeocodeURLEncoded = str_replace(' ', '%20', $urlForGeocode);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述