Python CGI-无法检索从Android发送的POST数据

时间:2018-07-11 17:02:13

标签: android python request http-post

场景

我正在使用一个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()是不正确的事情?

0 个答案:

没有答案