【发布时间】:2011-05-01 02:49:34
【问题描述】:
我目前面临一个关于谷歌搜索、curl 和 json 的问题。
首先,我想向您展示我已经拥有的代码: http://pastebin.com/LZzDZvHC
让我解释一下它:
- 我没有显示从 google 收到的密钥
- $data 是我从提交的表单中得到的帖子
- ip是用户ip
- $url 显然是来自 googleapps 的 ajax 请求 url
因此,如果我打印出 $url 并将其放入浏览器中,我会得到一个不错的 JSON - 完美运行。我想你已经猜到问题出在哪里了。
在这些声明之后,我开始卷曲。
我得到了一些东西,并想将 json 转换为数组。
所以问题来了: 我没有得到 JSON,我得到了一个错误。
说:
400。这是一个错误。 您的客户发出了格式错误或非法的请求。这就是我们所知道的一切。
上面有一个漂亮的谷歌标志。
所以我尝试将用户代理放入我的 curl 请求中 -> 也不起作用。
不用担心我的 json_decode() - 我确实安装了 并 对其进行了测试,它工作正常!所以那里没有问题。
当我收到此错误消息时,我显然从 var_dump() 中得到了一个“NULL”;
如果我没有将 [assoc] 设置为 true,我的浏览器甚至不会显示我的网站。 (http://www.php.net/manual/en/function.json-decode.php)
现在请看一下来自 google 的文档: http://code.google.com/apis/websearch/docs/ 向下滚动到 Php 访问
我可以想象这不仅是搜索的问题,而且是其他谷歌服务的问题,因为我的 curl 请求来自服务器,因此在我看来这是一个限制。
我希望有人知道如何克服这个问题,因为我想使用它。
【问题讨论】:
-
print $url;的输出是什么?这看起来对吗?您可能需要对参数值进行 urlencode...(当我打开 ajax.googleapis.com/ajax/services/search/… 时,我看到了一个不错的 JSON 响应) -
难以置信——这就是问题所在。我想我只是想复杂。非常感谢!
-
我将其作为答案,以便您接受。