PHP卷曲不良请求400 - mapquest地理编码

时间:2016-08-17 11:22:25

标签: php curl mapquest

我的网址是:

SELECT REPLACE(CONVERT(varchar(20), (CAST(9876543 AS money)), 1), '.00', '')

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

当我运行以下php代码时,神秘感展开:

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

变量$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); 保存上面的url值。第一个输出是:

$urlEncode

第二个请求的输出是:

<html><body><b>Http/1.1 Bad Request</b></body> </html>

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

如果我把URL放在我的浏览器中,我并没有失望,它会返回我正在寻找200状态代码的数据。

浏览器获取请求与cURL之间有何不同?

2 个答案:

答案 0 :(得分:1)

像@Matt忍者和@chiliNut建议的那样,我需要看一下这两个请求之间的区别。

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

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

$urlForGeocodeURLEncoded = str_replace(' ', '%20', $urlForGeocode);

enter image description here

答案 1 :(得分:0)

设置变量<p:commandButton update=":alltxform:Detail" oncomplete="PF('dialog').show()"> <f:setPropertyActionListener value="#{transaction}" target="#{transactionListModel.selectedTx}" /> </p:commandButton> 的方式似乎存在问题..您使用的是$urlForGeocode还是'

应该是前者。

第二个请求失败,因为URL字段中有"(空格),产生格式错误的请求。