android - 在 Android 中使用 Volley 库时数据未发布到服务器

标签 android post android-volley

我正在尝试使用 android 中的 Volley 库将一些 JsonObject Post 到服务器。我怀疑 getparams 方法没有被调用并且我的数据没有被发布。任何人都可以一步一步地指导我哪里出错了。我的代码如下:

          case R.id.bt_search:



         try {
            jObj.put("FromDate", "04-10-2014");
            jObj.put("Todate", "04-11-2014");
            jObj.put("BillNumber", bill);
            jObj.put("Status", "NotClosed");
            jObj.put("OrderType", "1,2,3" /* Ordertype */);
            Log.i("json data on clicking search", "" + jObj);
            makeJsonObjReq(jObj);


        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        break;


  private void makeJsonObjReq(final JSONObject jObj) {
    // TODO Auto-generated method stub
    RequestQueue rq = Volley.newRequestQueue(this);
    JsonObjectRequest jsonObjReq = new JsonObjectRequest(
            Method.POST,
            "myurl",
            null, new Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject arg0) {
                    // TODO Auto-generated method stub
                    Log.d("server Response", arg0.toString());

                    try {
                        for (int i = 0; i < arg0.length(); i++) {

                        }
                    } catch (Exception e) {

                    }
                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError arg0) {
                    // TODO Auto-generated method stub
                    VolleyLog.d("Error msg from server",
                            "Error: " + arg0.getMessage());

                }

            }) {

        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            // TODO Auto-generated method stub
            Map<String, String> params = new HashMap<String, String>();
            params.put("data", jObj.toString());

            //return params;
             return super.getParams();

        }

        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            // TODO Auto-generated method stub
            return super.getHeaders();
        }

    };

    com.cashier.volley_helper.AppController.getInstance()
            .addToRequestQueue(jsonObjReq);
    rq.add(jsonObjReq);
};

最佳答案

你必须修改 getParams() 方法

private void makeJsonObjReq(final JSONObject jObj) {
    // TODO Auto-generated method stub
    RequestQueue rq = Volley.newRequestQueue(this);
    JsonObjectRequest jsonObjReq = new JsonObjectRequest(
            Method.POST,
            "myurl",
            null, new Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject arg0) {
                    // TODO Auto-generated method stub
                    Log.d("server Response", arg0.toString());

                    try {
                        for (int i = 0; i < arg0.length(); i++) {

                        }
                    } catch (Exception e) {

                    }
                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError arg0) {
                    // TODO Auto-generated method stub
                    VolleyLog.d("Error msg from server",
                            "Error: " + arg0.getMessage());

                }

            }) {

        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            // TODO Auto-generated method stub
            Map<String, String> params = super.getParams();
             if( params==null)
             params =new HashMap<String, String>();
            params.put("data", jObj.toString());

           return params;
         }

        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            // TODO Auto-generated method stub
            return super.getHeaders();
        }

    };

    com.cashier.volley_helper.AppController.getInstance()
            .addToRequestQueue(jsonObjReq);
    rq.add(jsonObjReq);
}

关于android - 在 Android 中使用 Volley 库时数据未发布到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26732212/

相关文章:

php - 我的 .php/?PHPSESSID=xxxxxxxxxxxxxxxxxx 出现意外响应代码 500

java - 为什么显示 "The method getPreferenceOnScreen is depriciated"?

java - onConfigurationChanged() 未在方向更改时调用

java - 如何知道 Google Play 游戏何时连接成功?

python-3.x - 如何使用 .p12 证书对 rest api 进行身份验证

php - 使用 curl 和 php 将字符串作为文件发送

ios - 尝试使用 Alamofire 4 和 OAuth2 发出 POST 请求时出错 - Swift

php - android volley post参数和接收json

java - 如何从弹出 Activity 中的单选组获取编辑文本中的值?

android - 无法在Android Volley中将 header 与发布请求附加