【问题标题】:Volley String Request does'nt give Response in android排球字符串请求在android中没有给出响应
【发布时间】:2018-02-03 09:13:00
【问题描述】:

我对 Post 方法使用 Volley String 请求..但它没有给出正确的响应..当我使用 JsonObject 请求时它会给我正确的响应..我很困惑,我不明白字符串有什么问题请求..请任何人都可以帮助我处理字符串请求... 这是我的代码..

      StringRequest requestQueue =Volley.newRequestQueue(MainActivity.this);
      String URL ="http://demoangularaims.azurewebsites.net/api/v1/API_NI_ACD_FILL_COMMON_DDL_SP";

      Log.d(TAG, " url=" + URL);
StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
    @Override
    public void onResponse(String response) {
        Log.d(TAG, " response=" + response);
    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        Log.d(TAG, " error=" + error);

    }
}) {
    @Override
    protected Map<String, String> getParams() throws AuthFailureError {

        LinkedHashMap<String, String> linkmap = new LinkedHashMap<>();
        linkmap.put("p_ENTITY_ID", "2");
        linkmap.put("p_ORGCD", "p01");
        linkmap.put("p_COMPCD", "A0002");
        linkmap.put("p_DIVCD", "");
        linkmap.put("p_USERID", "");
        linkmap.put("p_ACDYR", "");
        linkmap.put("p_TYPE", "ACDYR_DDL");
        linkmap.put("p_FILTER1", "");
        linkmap.put("p_FILTER2", "");
        linkmap.put("p_DEFUNCT", "");

        Log.d(TAG, " MAP=" + linkmap);
        return linkmap;
    }

    @Override
    public Map<String, String> getHeaders() throws AuthFailureError {
        LinkedHashMap<String, String> headers = new LinkedHashMap<>();
        return headers;
    }


};

 requestQueue.add(stringRequest);

}


    PostMan OutPut-

【问题讨论】:

  • @ 我已经检查了 string requestJsonObject request 两个响应都相同,响应没有任何变化。
  • jsonObject 请求给了我正确的回应..@RatilalChopda
  • 你在邮递员中点击了服务,得到的响应是什么。
  • {"recordset":[{"ID":1718,"TEXT":"YEAR 2017-2018"},{"ID":1617,"TEXT":"YEAR 2016-2017" },{"ID":0,"TEXT":"--SELECT--"}],"记录集":[[{"ID":1718,"TEXT":"YEAR 2017-2018"},{" ID":1617,"TEXT":"YEAR 2016-2017"},{"ID":0,"TEXT":"--SELECT--"}]],"rowsAffected":[3],"output" :{},"returnValue":0}

标签: java android android-studio android-volley


【解决方案1】:

使用 getBody 而不是 getParams 它会起作用。由于您使用的是 POST 方法,因此您应该添加请求正文。

       @Override
        public byte[] getBody() throws AuthFailureError {
            try {                    
                return stringRequestBody.getBytes("utf-8"); //String Request Body with Encoded
            } catch (UnsupportedEncodingException uee) {
                return null;
            }
        }

【讨论】:

    【解决方案2】:

    试试这个

    JsonObjectRequest

    RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
    String URL = "http://demoangularaims.azurewebsites.net/api/v1/API_NI_ACD_FILL_COMMON_DDL_SP";
    
    JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
                    URL, null, new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    Log.d("TAG", "JSONObj response=" + response);
                }
    
            }, new Response.ErrorListener() {
    
                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.d("TAG", "JSONObj Error: " + error.getMessage());
                    //Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
                    // hide the progress dialog
                }
            });
    
    requestQueue.add(jsonObjReq);
    

    Jsonobject 请求输出

    D/TAG: JSONObj response={"recordsets":[],"output":{},"rowsAffected":[],"returnValue":0}
    

    字符串请求

    RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
    String URL = "http://demoangularaims.azurewebsites.net/api/v1/API_NI_ACD_FILL_COMMON_DDL_SP";
    
    StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    Log.d("TAG", "String response=" + response);
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.d("TAG", "String error=" + error);
    
                }
            });
            requestQueue.add(stringRequest);
    

    字符串请求输出

    D/TAG: String response={"recordsets":[],"output":{},"rowsAffected":[],"returnValue":0}
    

    邮递员输出

    【讨论】:

    • 当我使用 JsonObjectRequest 时,它会给我这样的响应......{"recordset":[{"ID":1718,"TEXT":"YEAR 2017-2018"},{"ID ":1617,"TEXT":"YEAR 2016-2017"},{"ID":0,"TEXT":"--SELECT--"}],"recordsets":[[{"ID":1718, "TEXT":"YEAR 2017-2018"},{"ID":1617,"TEXT":"YEAR 2016-2017"},{"ID":0,"TEXT":"--SELECT--"} ]],"rowsAffected":[3],"output":{},"returnValue":0}
    • @Jayashri 我签入邮递员这个网址请检查我的编辑答案。
    • @Ratilal 请检查我编辑的问题与邮递员的输出
    猜你喜欢
    • 2018-03-20
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 2020-12-05
    • 2011-07-13
    相关资源
    最近更新 更多