未从服务器

时间:2017-02-01 12:02:02

标签: android python json flask android-volley

我正在尝试在Android和我在AWS上设置的Flask服务器之间进行通信。我有一些数据放在JSONObject中,我通过POST请求将其发送到服务器。

Flask服务器接收此JSON,对其进行解析,甚至进行适当的操作。但是,当我将Response发送回Android时,它似乎根本无法识别它。

我相信我在Flask返回部分出错了,但我不知道到底在哪里。

以下是Flask返回代码:

parsed_results = parse_text(results)

#json_x = json.dumps({'id':str(status.inserted_id), 'Result':'OK', 'data': parsed_results})
return Response(json.dumps({'id': str(status.inserted_id), 'Result': 'OK', 'data': parsed_results, 'raw_data': results}), mimetype='application/json'), 200


if __name__ == "__main__":
    app.run(host='0.0.0.0', debug=True)

以下是Android Listener代码:

JsonObjectRequest request = new JsonObjectRequest(
            Request.Method.POST,
            URL,
            data,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    Log.d("JSON_TAG", response.toString());
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    error.printStackTrace();
                }
            }
    )

    {
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            return super.getParams();
        }

        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            //return super.getHeaders();
            Map<String,String> headers = new HashMap<>();
            headers.put("Content-Type","application/json");
            return headers;
        }
};

Android应用程序暂时闲置。我哪里错了?任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:-1)

我解决了这个问题,伙计们。问题非常明显 - 来自服务器的返回语句不匹配。通过使用jsonify,我能够将数据返回到服务器。

from flask import jsonify

results = parse_results(data)

return jsonify(results)

像魅力一样工作!