无法从PHP

时间:2016-08-25 21:12:00

标签: php json curl

需要:

我需要从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

2 个答案:

答案 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);