Android无法从flask服务器读取http post响应

时间:2017-12-12 01:13:01

标签: java android http flask

我刚刚写了一个带烧瓶的简单服务器,并从Android应用程序向服务器发送http post requset。但我没有在Android应用程序中阅读响应。该应用程序抛出异常:

我的烧瓶代码是:

@app.route('/zsj',methods = ['POST'])
def show_data():
    data =  request.get_json()
    print request.values #json.loads(data)#request.get_json()
    #data = json
    #print data
    return "aaaa"#jsonify({'w':'u'})

我的Android应用程序只是使用HttpURLConnection类发送帖子并从服务器获取响应,这应该是一个字符串:' aaaa'。我们试图读出字符串但失败了。 我的Android代码是

public class SendPostRequest extends AsyncTask<String, Void, String> {

    protected void onPreExecute(){}

    protected String doInBackground(String... arg0) {

        try{
            // Connect to the server
            URL url = new URL("http://ec2-35-164-172-186.us-west-2.compute.amazonaws.com:5000/zsj");

            JSONObject postDataParams = new JSONObject();
            // Display command

            postDataParams.put("Weather", "email");


            Log.e("params",postDataParams.toString());
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setReadTimeout(3000);
            conn.setConnectTimeout(3000);
            conn.setRequestMethod("POST");
            conn.setDoInput(true);
            conn.setDoOutput(true);
            OutputStream os = conn.getOutputStream();
            BufferedWriter writer = new BufferedWriter(
                    new OutputStreamWriter(os, "UTF-8"));
            writer.write(getPostDataString(postDataParams));

            writer.flush();
            writer.close();
            os.close();

            responseMessage = conn.getResponseMessage();

            int responseCode=conn.getResponseCode();
            responseCode2=responseCode;

            if (responseCode == HttpsURLConnection.HTTP_OK) {

                BufferedReader in=new BufferedReader(new
                        InputStreamReader(
                        conn.getInputStream()));
                // jtest=conn.getInputStream().read(data);
                BufferedReader er=new BufferedReader(new
                        InputStreamReader(
                        conn.getErrorStream()));

                StringBuffer sb = new StringBuffer("");
                String line="";
                StringBuffer sb2 = new StringBuffer("");
                // in.readLine();
                while((line = in.readLine()) != null) {
                    sb.append(line);
                    break;
                }
                // jtest="abc";
                // jtest=sb.toString();
                while((line = er.readLine()) != null) {
                    sb2.append(line);
                    break;
                }

                in.close();
                er.close();
                return sb.toString();
            }
            else {
                return new String("false : "+responseCode);
            }
        }
        catch(Exception e){
            return new String("Exception: " + e.getMessage());
        }

    }

我的应用程序代码只是在

处抛出异常
BufferedReader er=new BufferedReader(new
                        InputStreamReader(
                        conn.getErrorStream()));

任何人都知道如何解决问题

0 个答案:

没有答案