我正在尝试使用以下代码使用php发送json请求并将响应存储在变量中
$hmaps_request = "https://geocoder.api.here.com/6.2/geocode.json?app_id=xxx&app_code=yyy&searchtext=3891 Delwood Drive, Powell, OH, United States";
$json = file_get_contents($hmaps_request);
$details = json_decode($json, TRUE);
我没有得到任何错误以及任何回应。但是,如果我将网址粘贴到浏览器中,则可以得到json响应。
答案 0 :(得分:2)
如果您读取const checked = [2, 3], /* array holding all checked values */
arr = [{id: 1}, {id: 2}],
res = arr.map(({id}) => checked.includes(id) ? {id, unChecked: false} : {id});
console.log(res);
数组(由file_get_contents()调用生成),则会发现您收到了“ 400 Bad Request”响应,因此一无所获。因此,您的URL一定有问题。
经过简要检查,我认为可能是您的$http_response_header
参数阻止了您。首先,有效的URL查询通常不会包含空格。可能是为什么API服务器说您是“错误请求”。
通常,您需要正确地转义URL查询字符串以具有正确的URL。现代浏览器非常擅长为您无缝,自动地进行翻译,因此直接在浏览器中使用URL可能不会出现此问题。
让我们对该理论进行检验。我们将使用http_build_query()来转义您的查询查询参数:
(出于隐私原因,已修改参数。请替换查询变量)
"searchtext"
我现在似乎已经得到正确的解码响应。自己尝试。
答案 1 :(得分:1)
您的请求URL发生错误更改请求URL
来自
$hmaps_request = "https://geocoder.api.here.com/6.2/geocode.json?app_id=NT2iR8TD1kAeCxERIow8&app_code=-r9pZGDuz6G5NWToLaCSUQ&searchtext=3891 Delwood Drive, Powell, OH, United States";
收件人
$hmaps_request = "https://geocoder.api.here.com/6.2/geocode.json?app_id=NT2iR8TD1kAeCxERIow8&app_code=-r9pZGDuz6G5NWToLaCSUQ&searchtext=3891+Delwood+Drive+Powell+OH+United+States";
这是完整的代码
$hmaps_request = "https://geocoder.api.here.com/6.2/geocode.json?app_id=NT2iR8TD1kAeCxERIow8&app_code=-r9pZGDuz6G5NWToLaCSUQ&searchtext=3891+Delwood+Drive+Powell+OH+United+States";
$json = file_get_contents($hmaps_request);
$details = json_decode($json, TRUE);
print_r($details);
答案 2 :(得分:1)
我认为您的请求网址中存在错误。请检查以下代码。
$url = "https://geocoder.api.here.com/6.2/geocode.json?app_id=NT2iR8TD1kAeCxERIow8&app_code=-r9pZGDuz6G5NWToLaCSUQ&searchtext=3891 Delwood Drive, Powell, OH, United States";
$url = str_replace(" ","%20",$url);
$json = @file_get_contents($url);
$details = json_decode($json, TRUE);
print_r($details);