我正在尝试从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字符串?
答案 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服务客户端的框架。