我有一个python脚本,它对我的php页面(json格式)执行了pa POST请求。发布后,我从响应中看到数据是通过python脚本中的print(r.text)
以PHP发送的。
问题在于我无法使用PHP方面的数据 - 我无法打印或写入文件等。
我在这里做错了什么?
python脚本的一部分:
data_json = {
"measurementTime" : first_line.split(',')[0],
"windSpeed" : first_line.split(',')[1],
"windGust" : first_line.split(',')[2],
"windSpeedCount" : first_line.split(',')[3],
"rain" : first_line.split(',')[12],
"windDirection" : first_line.split(',')[13],
"inputVoltage" : first_line.split(',')[14],
"solarRadiation" : first_line.split(',')[15],
"temperature" : first_line.split(',')[16],
"windSpeed" : first_line.split(',')[18],
"humidity" : first_line.split(',')[19],
"barPressure" : first_line.split(',')[20]
}
url = 'http://localhost/index.php'
r = requests.post(url, data=json.dumps(data_json))
print(r.text) # here I can see that data has been sent
print(r.status_code)
PHP(index.php):
<?php
$json = file_get_contents('php://input');
print_r($json);
?>
Python脚本输出:
...
<body>
{"measurementTime": "2018-01-25 17:52:25", "windSpeed": "9.0", "windGust": "0.0", "windSpeedCount": "0", "rain": "1.50", "windDirection": "0", "inputVoltage": "13.51", "solarRadiation": "", "temperature": "0.00", "humidity": "87.5", "barPressure": "1004.473"}
</body>
</html>
答案 0 :(得分:0)
问题是我无法使用PHP方面的数据 - 我不能 打印或写入文件等
这是一个将python json写入文件的PHP脚本:
<?php
file_put_contents(
"../tmp/data.txt",
file_get_contents('php://input') . "\n"
);
echo "Got it";
?>
我遇到的唯一问题是有权写入文件。我正在使用apache2,所以我在apache2目录下创建了一个tmp
目录,并且我让所有用户都能够写入目录:
/usr/local/apache2/$ mkdir tmp
/usr/local/apache2/$ ls -al
...
...
drwxr-xr-x 2 7stud admin 64 Jan 25 13:23 tmp
/usr/local/apache2$ chmod a+w tmp #all+write, where all=user,group,other
/usr/local/apache2$ ls -al
...
...
drwxrwxrwx 2 7stud admin 64 Jan 25 13:23 tmp
运行以下python脚本后:
import requests
import json
data_json = {
"measurementTime" : 10,
"windSpeed" : 20
}
url = 'http://localhost:8080/php1.php'
r = requests.post(url, data=json.dumps(data_json))
print(r.text)
print(r.status_code)
在python窗口中,我看到了:
得到了 200
在apache2窗口中,我可以看到json被写入文件:
/usr/local/apache2$ cat tmp/data.txt
{"measurementTime": 10, "windSpeed": 20}
这是一个使用json数据的php脚本:
<?php
$json = file_get_contents('php://input');
$obj = json_decode($json);
$sum = $obj->measurementTime + $obj->windSpeed;
echo "The sum was: $sum";
?>
在python窗口中,我看到:
总和是:30
200