file_get_contents没有响应

时间:2013-09-06 08:56:25

标签: php json laravel laravel-4

我正在尝试从Laravel Project中的页面获取JSON字符串。使用这个:

$json = file_get_contents($url);
$data = json_decode($json, TRUE);
return View::make('adventuretime.marceline')
    ->with('json', $json)
    ->with('title', 'ICE KING')
    ->with('description', 'I am the Ice King')
    ->with('content', 'ice king');

但由于我只使用本地主机,我认为这不起作用,这就是为什么它不输出任何东西。我想知道什么是灵活的正确方法,并能够使用PHP获取任何$ url值的JSON字符串?

1 个答案:

答案 0 :(得分:0)

查看上面的评论,您使用的$ url可能无效,请通过将浏览器指向该处并查看会发生什么来查看。

如果您确定$ url正常,但仍然收到404 Not Found错误 - 请验证您是否为该地址定义了正确的Laravel路由。如果路线很好,也许你忘了做

composer dump-autoload 

在您的routes.php中进行修改后。如果是这样,请尝试以上操作并刷新浏览器以查看它是否有帮助。


此外,请记住,使用当前功能,您只能提交GET请求。此外,由于安全原因,此功能可能无法在某些托管服务器上获取远程URL。如果您仍想使用它,最好检查

if($json !== FALSE)
在处理$ json响应之前

。如果file_get_contents失败,则返回false。

对问题的部分内容进行处理

what is the proper way for it to be flexible and be able to get the JSON string with any $url

我建议使用cURL作为获取远程内容的标准方便方法。使用cURL,您可以更好地控制发送http请求并接收它返回的“答案”的过程。 Personaly,在我的Laravel 4应用程序中,我经常使用这个包jyggen/curl。您可以在此处阅读相关文档:jyggen docs

如果您对cURL不满意并想要更好的控制,请尝试Guzzle正如作者所述,Guzzle是一个PHP HTTP客户端&用于构建RESTful Web服务客户端的框架。