目的是让area方法使用cgi和restful服务返回json序列化数据。当我运行request_area()时,我的控制台显示500内部服务器错误,当我检查错误日志时,它会在标题之前显示脚本输出结束:measurement.py'
这是measurement.py
MemoryStream ms = new MemoryStream(bImage);
System.Drawing.Image returnImage = System.Drawing.Image.FromStream(ms);
if (returnImage.Palette.Flags == 2)
{
System.Diagnostics.Debug.WriteLine("Image is greyscale");
}
这是request_area()
#!/usr/bin/python3
__author__ = 'charles'
import json
import logging
import db_utility, db_access
def send_data(data):
logging.debug(str(data))
dataJ = json.dumps(data)
logging.debug("custJ " + str(dataJ))
lng = len(dataJ)
logging.debug("len " + str(lng))
print("Content-Type: application/json; charset=UTF-8")
print("Content-Length: " + str(lng))
print()
print(dataJ)
def area():
areas = db_access.get_all_areas()
# print(areas)
send_data(areas)
哦,在area(),get_all_areas()
中调用函数import requests
r = requests.get("http://localhost/cgi-bin/measurements_rest/measurement.py/area")
print(r.text)
我无法弄清楚我做错了什么。
答案 0 :(得分:0)
当你使用apache来调用你的程序时,apache会放入 环境几个变量,包含cgi调用和url的信息。
您感兴趣的是PATH_INFO,其中包含剩余的字符串
未被apache解析,即area
。在你的python main中你需要
os.getenv('PATH_INFO')
并认出了这个词并称呼你的功能。
或者,使用像cherrypy这样的框架 这样做对你有用吗?
此外,您正在Content-type
等标题之前打印内容。删除
print(areas)