如何从外部文件获取有效的json?

时间:2012-08-23 03:58:35

标签: php json

我试图从网站获取json数据。在第一个链接中,它返回空白。 但在第二个,它返回json。

有人知道如何从第一个链接获取json数据吗?

在访问此代码之前,请登录此链接: https://loginfree.globo.com/login/438 用户:cartolaewlfa@gmail.com 传球:cartoletasfc

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<iframe src="http://cartolafc.globo.com/time/claudioivp-allianz/atletas.json?rodada_id=12"></iframe>
<?php
$file = json_decode(file_get_contents("http://cartolafc.globo.com/time/claudioivp-allianz/atletas.json?rodada_id=12"));

print_r($file);

echo "casa";
?>

<iframe src="http://cartolafc.globo.com/mercado/filtrar.json?page=1&order_by=preco&clube_id=277"></iframe>
<?php
$file = json_decode(file_get_contents("http://cartolafc.globo.com/mercado/filtrar.json?page=1&order_by=preco&clube_id=277"));

print_r($file);

echo "casa";
?>
</body>
</html>

1 个答案:

答案 0 :(得分:1)

显然,第一个json URI要求用户登录网站,否则会将您重定向到主页,而第二个似乎对所有人开放。

我在这里看到的唯一解决方案是使用curl(或您想要的任何其他方法)来模拟浏览器并按照该网站的登录过程,发送您的登录信息,密码以及其所需的任何其他信息。然后你可以捕获它将生成的cookie。获得cookie后,您可以将其保存在cookiejar文件或数据库中。

使用这些cookie,您将能够检索json文件,您可以使用file_get_contents对象通过stream_context发送它们,或者如果您使用curl,则{{1 }和CURLOPT_COOKIE

当然这些cookie将过期。只需设置一个验证流程,如果存储的cookie已过期,它将获得新的cookie。

如果此json文件的内容没有以高频率更新,或者对于用户立即获取这些更新并不重要,那么您可以在服务器中保留此json文件的副本,而不受任何访问限制。

这会很愚蠢,但如果域名是你的(或者你有权访问它),只需删除该文件中的登录验证?