我有一个内部服务器,每隔几分钟生成一次JSON。我需要将它传递给外部服务器,以便我可以操作数据然后在Web界面中显示它。 这是我的python将数据发送到PHP脚本:
x = json.dumps(data)
print '\nHTTP Response'
headers = {"Content-type": "application/json"}
conn = httplib.HTTPConnection("myurl.com")
conn.request("POST", "/recieve/recieve.php", x, headers)
response = conn.getresponse()
text = response.read()
print "Response status: ",response.status,"\n",text
conn.close()
以下是我接收数据的PHP
$data = file_get_contents('php://input');
$objJson = json_decode($data);
print_r ($objJson);
我的python脚本返回响应状态200,这很好,它返回我的JSON。但是在PHP方面,我希望能够存储这些信息进行操作,然后让Web客户端抓住它。然而,即使我说
,似乎print_r ($objJson);
当我访问.php页面时,它不会打印出我的对象。我想数据已经消失了,因为file :: input只读取然后结束?
答案 0 :(得分:0)
在向PHP发送数据时尝试使用包含JSON数据的命名参数,并尝试在PHP中使用$_POST超全局数组(因为您显然通过cgi或类似接口连接而不是通过cli连接)。 您可以通过打印$ _POST数组来查看所有POST数据:
print_r($_POST);
答案 1 :(得分:0)
请勿使用file_get_contents()
只是:
if($_POST){ echo "WE got the data"; }
如果您不熟悉PHP数组,和print_r
将帮助您从那里开始。
答案 2 :(得分:0)
这是我最后做的快速修复
python
x = json.dumps(data)
headers = {"Content-type": "application/json"}
conn = httplib.HTTPConnection("myurl.com")
conn.request("POST", "/script.php", x, headers)
response = conn.getresponse()
text = response.read()
print "Response status: ",response.status,"\n",text
conn.close()
然后我意识到PHP正在接收帖子数据,但我很难操纵它。所以我只是将JSON发送到接收的PHP文件,该文件将数据写为文件,然后获取另一个JavaScript请求。 php
if($_POST){ echo "WE got the data\n"; } //thanks rm-vanda
$data = file_get_contents('php://input');
$file = 'new.json';
$handle = fopen($file, 'a');
fwrite($handle, $data);
fclose($handle);
exit;
然后从我的客户端只发出一个文件的ajax请求并在客户端解析它。
最终我不得不重新考虑这一点,但它现在有效。每次新数据进入或在JavaScript成功回调中解析旧数据时,我还必须重写new.json文件。取决于你想做什么。