场景
我正在使用一个Android应用程序,该应用程序需要向服务器发送一些POST数据,然后将其用于向目标受众发送通知。
我的方法
您也可以原谅Java部分,因为我也尝试使用HTML发送POST,但还是没有运气。直接前往Python并阅读The Issue
try {
URL url = new URL("https://example.com/handler.py");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
conn.setRequestProperty("Accept","application/json");
conn.setDoOutput(true);
conn.setDoInput(true);
JSONObject jsonParam = new JSONObject();
jsonParam.put("key", "value");
Log.i("JSON", jsonParam.toString());
DataOutputStream os = new DataOutputStream(conn.getOutputStream());
//os.writeBytes(URLEncoder.encode(jsonParam.toString(), "UTF-8"));
os.writeBytes(jsonParam.toString());
os.flush();
os.close();
Log.i("STATUS", String.valueOf(conn.getResponseCode()));
Log.i("MSG" , conn.getResponseMessage());
conn.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
并尝试使用以下方法检索POST数据:
#!/usr/bin/python
print "Content-type: text/html\r\n\r\n"
import cgi
import sys
import cgitb; cgitb.enable()
post = sys.stdin.readlines() #to get raw post data
... rest of the code ...
#post is always empty
问题
这里的主要问题是我无法检索POST数据。
我无法使用FieldStorage(),因为我是从Android(而非HTML)发送请求。
我哪里错了? sys.stdin.readlines()
是不正确的事情?