0

我正在尝试从我的 Laravel 项目中的页面获取 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 字符串的正确方法是什么?

4

1 回答 1

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 请求和接收它返回的“答案”的过程。就个人而言,在我的 Laravel 4 应用程序中,我经常使用这个包jyggen/curl。你可以在这里阅读它的文档:jyggen docs

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

于 2013-09-06T15:18:05.720 回答