嗨,我的Volley post方法有问题

时间:2016-01-15 07:26:42

标签: android json android-volley

我想以json格式发布数据,但我不知道如何做到这一点请帮我解决这个问题。通常我使用如下的Volley post方法(它不是任何格式化的类型),它完美地工作我,但现在我的后端开发人员要求我以json格式发布详细信息。

 String url=" http://10.10.4.27/teacherapp_dxb/index.php/teacher_app_cn/login?user_id=EMP263&password=thanzeel";
 StringRequest strReq = new StringRequest(Request.Method.POST,
            url, new Response.Listener<String>() {

        @Override
        public void onResponse(String response) {

            Log.d(TAG, "login Response: " + response.toString());
            hideDialog();

            try {
                JSONObject jObj = new JSONObject(response);
           }

                else {
                    // order error
                    String responseMsg = jObj.getString("response");
                    Toast.makeText(Viewactivity.this,
                      "ooola kirane"+ responseMsg, Toast.LENGTH_LONG).show();
                }

            } catch (JSONException e) {
                e.printStackTrace();
            }

        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(Viewactivity.this,
                    error.getMessage(), Toast.LENGTH_LONG).show();
            hideDialog();
        }
    }) {

        @Override
        protected Map<String, String> getParams() {
            // Post product to orderplacing url
            Map<String, String> params = new HashMap<String, String>();
           params.put("user_id,"EMP263")
            params.put("password","thanzeel");

            return params;
        }

    };

    // Adding request to  queue
    AppController.getInstance().addToRequestQueue(strReq);
   }

在上面的代码中,我发送任何格式的数据,但后端开发人员需要以json格式获取数据。所以请帮我解决这个问题。

3 个答案:

答案 0 :(得分:0)

您可以在getParams()

中执行以下操作
Map<String, String> params = new HashMap<String, String>();
            params.put("user_id","EMP263");
                    params.put("password","thanzeel");

            JSONObject jsonObjectParam = new JSONObject(params);

            Map<String,String > postParams = new HashMap<>();
            postParams.put("key",""+jsonObjectParam);

您可以向后端团队索取“key”

Hope it helps!

答案 1 :(得分:0)

如果你想从Android应用程序中JSONArray发送数据,请尝试以下方式:

 public String makeJSON(String s1,String s2,String s3){
        JSONArray jsonArray = new JSONArray();

        JSONObject data = new JSONObject();
        try {
            data.put("dataparam1",s1);
            data.put("dataparam2", s2);
            data.put("dataparam3", s3);


        } catch (JSONException e) {
           e.printStackTrace();
        }

        jsonArray.put(data);

        JSONObject jsonData = new JSONObject();
        try {
            jsonData.put("dataArray", jsonArray);
        } catch (JSONException e) {
        e.printStackTrace();
        }

        String jsonStr = jsonData.toString();
        System.out.println("jsonString: "+jsonStr);

        return jsonStr;
    }

如果您只想在JSONObject中发送数据,请尝试以下操作:

public String createjson(String s1,String s2,String s3)
 {
  JSONObject jsonObj = new JSONObject();
  JSONArray jsonArr = new JSONArray();
    JSONObject jsonObject = new JSONObject();
          try {
                jsonObj.put("dataparam1",s1);
                 jsonObj.put("dataparam2",s2);
                 jsonObj.put("dataparam3",s3);
                 jsonArr.put(jsonObj);
                 jsonObject.put("cartItems", jsonArr);
            } catch (JSONException e) {}
            return jsonObject.toString(); 
            }

答案 2 :(得分:0)

您使用getBody()之类的getParams()方法并设置yoru内容类型application/json

 StringRequest request = new StringRequest(...) {
    @Override
    public byte[] getBody() throws AuthFailureError {
        return body.toString().getBytes();
    }

    @Override
    public String getBodyContentType() {
        return "application/json";
    }
};