出于某种原因,我找到了如何在我的cgi脚本中读取json数据。
我正在通过像这样的Android应用程序发送json:
DefaultHttpClient httpClient = new DefaultHttpClient();
ResponseHandler<String> resonseHandler = new BasicResponseHandler();
HttpPost postMethod = new HttpPost(serverUrl + "/cgi-bin/save.py");
JSONObject json = new JSONObject();
try {
SimpleDateFormat sdf = new SimpleDateFormat("mm:ss");
String time = sdf.format(camera.getRecordTime().getTime());
json.put("md", camera.isMdOn());
json.put("threshold", camera.getThreshold());
json.put("recordTime", time);
postMethod.setHeader("Content-Type", "application/json");
postMethod.setEntity(new ByteArrayEntity(json.toString().getBytes("UTF8")));
String response = httpClient.execute(postMethod, resonseHandler);
Log.e("response :", response);
} catch (JSONException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
我的脚本是:
#!C:\Python27\python.exe
import cgi, sys, json
#data = cgi.FieldStorage()
#data = sys.stdin.read()
print "Content-type: application/json"
print
response={'result': data['md']}
print(json.JSONEncoder().encode(response))
你可以看到我尝试了几种方法(cgi.FieldStorage()
,sys.stdin.read()
)
但没有任何作用,我收到500
错误。我能够从脚本发回数据,但不能读取发送到脚本的数据。
我知道我可以使用框架,但我不想这样做,所以请不要将我推荐给任何一个框架。