我的网址是:
http://www.mapquestapi.com/geocoding/v1/batch?key=dNBvDLtTx85L3akdg8vBoHQXrWpDJSEI&location=HEBRON,KY,US&location=CINCINNATI,US&location=BEDFORD PARK,IL,US&location=HODGKINS,US&location=BALDWIN PARK,CA,US&location=,US
它很长但应该符合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,CURLOPT_FRESH_CONNECT,TRUE);
$return = curl_exec ($ch);
curl_close ($ch);
echo( $return);
$output = shell_exec('curl ' . $urlForGeocode);
echo( $output);
变量$urlEncode保存上面url的值.第一个输出是:
<html><body><b>Http/1.1 Bad Request</b></body> </html>
第二个请求的输出是:
{
"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": []
}]
}
这两个不同的cURL请求基本上返回相同的东西.当我从本地机器上的终端运行cURL时,也会返回400.
如果我把URL放在我的浏览器中,我并没有失望,它返回我正在寻找的200状态代码的数据.
浏览器获取请求和cURL之间有什么不同?
像@Matt忍者和@chiliNut建议的那样,我需要看看这两个请求之间的区别.
唯一的区别是空间.我尝试运行urlencode()PHP函数以及rawurlencode()PHP函数,但都没有影响结果.
这就是我现在使用的而不是url编码:
$urlForGeocodeURLEncoded = str_replace(' ','%20',$urlForGeocode);