BasicNetwork.performRequest:https://api.infermedica.com/v2/diagnosis的意外响应代码400 - Android Java

时间:2017-09-23 07:19:44

标签: java android api android-volley postman

我正在测试媒体间API,我正在尝试使用下面的代码。我用了凌空:

    String url = "https://api.infermedica.com/v2/diagnosis";
    JSONArray evidence = new JSONArray();
    JSONObject evidence1 = new JSONObject();
    try {
        evidence1.put("id", "s_1193");
        evidence1.put("choice_id", "present");
    } catch (JSONException e) {
        e.printStackTrace();
    }

    try {
        evidence.put(0,evidence1);
    } catch (JSONException e) {
        e.printStackTrace();
    }

    JSONObject postparams  = new JSONObject();
    try {
        postparams.put("sex", "male");
        postparams.put("age", 30);
        postparams.put("evidence", evidence);
    } catch (JSONException e) {
        e.printStackTrace();
    }

    Log.e("DATA:", postparams.toString());
    JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
            url, postparams,
            new Response.Listener() {
                @Override
                public void onResponse(Object response) {
                    Log.e("DATA: ", response.toString());
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    // As of f605da3 the following should work
                    NetworkResponse response = error.networkResponse;
                    if (error instanceof ServerError && response != null) {
                        try {
                            String res = new String(response.data,
                                    HttpHeaderParser.parseCharset(response.headers, "utf-8"));
                            // Now you can use any deserializer to make sense of data
                            JSONObject obj = new JSONObject(res);
                            Log.e("DATA:" , obj.toString());
                        } catch (UnsupportedEncodingException e1) {
                            // Couldn't properly decode data to string
                            e1.printStackTrace();
                        } catch (JSONException e2) {
                            // returned data is not JSONObject?
                            e2.printStackTrace();
                        }
                    }
                }
            }

    ) {
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            HashMap<String, String> headers = new HashMap<String, String>();
            headers.put("app-id", "MY-APP-ID");
            headers.put("app-key", "MY-APP-KEY");
            headers.put("authorization", "Basic Og==");
            headers.put("Content-type", "application/json");
            return headers;
        }
    };


    Log.e("DATA: " , "calling volley");
    RequestQueue requestQueue  = Volley.newRequestQueue(this);
    requestQueue.add(jsonObjReq);

运行它并检查日志后,结果如下:

 E/DATA:: {"sex":"male","age":30,"evidence":
 [{"id":"s_1193","choice_id":"present"}]}

 E/DATA:: calling volley

 E/Volley: [236] BasicNetwork.performRequest: Unexpected response code 400 
 for https://api.infermedica.com/v2/diagnosis

 E/DATA:: {"message":"bad request"}

我在Postman中尝试了记录的json,它被接受了:

以下是我邮递员结果的屏幕截图

postman result

我一直在这里寻找答案,我已经添加了内容类型,并确保我的密钥是正确的。我正确地使用了截击。非常感谢您的帮助。

0 个答案:

没有答案