需要:
我需要从URL获取json数据
问题:
返回空值
尝试:
我尝试了CURL和file_get_contents方法。但两者都没有给出结果
示例代码:
<?php
ini_set("allow_url_fopen", 1);
$url="http://techpaisa.com/chart/wipro/atr/?xhr";
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL,$url);
$result=curl_exec($ch);
curl_close($ch);
$r=json_decode($result);
print_r($r);
?>
此代码返回空。我刚试过,复制json并在我自己的网站上推出。然后我试了,我得到了结果。
我从“http://techpaisa.com/chart/wipro/atr/?xhr”获得了以下标题:
Server: nginx/0.7.65
Content-Type: application/json
Keep-Alive: timeout=20
Vary: Accept-Encoding
Transfer-Encoding: chunked
Date: Thu, 25 Aug 2016 20:59:46 GMT
X-Varnish: 462939608 462936037
Age: 3494
Via: 1.1 varnish
Connection: keep-alive
我自己的页面代码和标题:(跳过一些Json)
<?php
header('Content-type: application/json');
echo "{'content': 'Date,Price,ATR#1995/02/01,37.0,0.5', 'analysis_type': 'atr', 'text_analysis': 'ATR: 9.57', 'axisname': 'Price', 'analysis_type_verbose': 'Average True Range', 'image_type': 'text/csv', 'symbol': 'wipro', 'fig_title': 'WIPRO Average True Range', 'annotations': '[]', 'set_date_range': true}";
?>
标题值:
Server: Apache
X-Powered-By: PHP/5.3.29
Transfer-Encoding: chunked
Content-Type: application/json
答案 0 :(得分:0)
我刚试过
var_dump(json_decode(file_get_contents($url), true));
它有效。 您的代码也应该。
如果没有,那么还有其他工作在这里。
您从哪里运行该代码?也许有防火墙或其他机制允许读取自己的网页和脚本,但不能读取外部资源。这通常是为了防止资源滥用。
你被允许阅读这些信息吗?如果没有,那么网站管理员可能已经注意到了某人&#34;刮擦&#34;数据并锁定当前Web服务器的地址。您仍然可以从家里读取的信息,它只是服务器上不再有效的PHP代码。
我个人打赌理由#1。在这种情况下,您必须提供管理您的Web服务器的任何人。
答案 1 :(得分:0)
谢谢lserni
我接受你的回答。
您的代码正常运行。但事实是,我无法从keyname获得价值。
示例:强>
url="http://techpaisa.com/chart/wipro/atr/?xhr";
$result=json_decode(file_get_contents($url), true);
var_dump($result->content);
它出现以下错误:
Notice: Trying to get property of non-object myfile.php
但我使用以下代码解决了这个问题:
$url="http://techpaisa.com/chart/wipro/atr/?xhr";
$data = json_decode(file_get_contents($url,true));
var_dump($data->content);