【问题标题】:Android Volley post json data to serverAndroid Volley 将 json 数据发布到服务器
【发布时间】:2017-06-24 04:18:54
【问题描述】:

我是 Java 新手。我想将 post json 数据发送到网络服务器。 我的 Volley 帖子如下。

public void postData(String url,JSONObject data,final VolleyCallback mResultCallback){
    RequestQueue requstQueue = Volley.newRequestQueue(mContext);

    JsonObjectRequest jsonobj = new JsonObjectRequest(Request.Method.POST, url,null,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    if(mResultCallback != null){
                        mResultCallback.notifySuccess(response);
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    if(mResultCallback != null){
                        mResultCallback.notifyError(error);
                    }
                }
            }
    ){
      //here I want to post data to sever
    };
    requstQueue.add(jsonobj);

}

这是我的 MainActivity 代码

JSONObject data = null;
            try {
                String datas = "{'email': email,'password': password}";
                data = new JSONObject(datas);
            }catch (JSONException e){
                e.printStackTrace();
            }
String url = "http://example.com";

我想将 JSON 数据发布到我的 PostData 方法。 如何将此 json 数据发布到我的服务器?

【问题讨论】:

  • new JsonObjectRequest(Request.Method.POST, url,null, 第三个参数,如果是 JSONObject 参数。用您的 jsondata 替换 null

标签: java android json webserver android-volley


【解决方案1】:
    public void postData(String url,Hashmap data,final VolleyCallback mResultCallback){
        RequestQueue requstQueue = Volley.newRequestQueue(mContext);

        JsonObjectRequest jsonobj = new JsonObjectRequest(Request.Method.POST, url,new JSONObject(data),
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        if(mResultCallback != null){
                            mResultCallback.notifySuccess(response);
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        if(mResultCallback != null){
                            mResultCallback.notifyError(error);
                        }
                    }
                }
        ){
          //here I want to post data to sever
        };
        requstQueue.add(jsonobj);

    }

现在,从你的 mainActiviy 类

    Hashmap data = new HashMap();
    data.put("email","email");
    data.put("password","password");      
    String url = "http://example.com";

//now you can just call the method, I have rectified your string to hashmap,
postData(url,data,new mResultCallb.....              //rest of your code

【讨论】:

    【解决方案2】:
    public void postData(String url,JSONObject data,final VolleyCallback mResultCallback){
    RequestQueue requestQueue = Volley.newRequestQueue(mContext);
    
    JsonObjectRequest jsonobj = new JsonObjectRequest(Request.Method.POST, url,data,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    if(mResultCallback != null){
                        mResultCallback.notifySuccess(response);
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    if(mResultCallback != null){
                        mResultCallback.notifyError(error);
                    }
                }
            }
    );
    requstQueue.add(jsonobj);
    
    }
    

    【讨论】:

      【解决方案3】:
      public void postData(String url,final JSONObject data,final VolleyCallback mResultCallback){
          RequestQueue requstQueue = Volley.newRequestQueue(mContext);
      
          JsonObjectRequest jsonobj = new JsonObjectRequest(Request.Method.POST, url,null,
                  new Response.Listener<JSONObject>() {
                      @Override
                      public void onResponse(JSONObject response) {
                          if(mResultCallback != null){
                              mResultCallback.notifySuccess(response);
                          }
                      }
                  },
                  new Response.ErrorListener() {
                      @Override
                      public void onErrorResponse(VolleyError error) {
                          if(mResultCallback != null){
                              mResultCallback.notifyError(error);
                          }
                      }
                  }
          ){
             @Override
                  protected Map<String, String> getParams() {
                      Map<String, String> params = new HashMap<String, String>();
                      if(data != null){
                          Iterator<String> keysItr = data.keys();
                          while(keysItr.hasNext()) {
                                  String key = keysItr.next();
                                  Object value = data.get(key);
      
                                  if(value instanceof JSONArray) {
                                      value = toList((JSONArray) value);
                                  }
      
                                  else if(value instanceof JSONObject) {
                                      value = toMap((JSONObject) value);
                                  }
                                  params.put(key, value);
                              }
                      } 
                      return params;
                  }
          };
          requstQueue.add(jsonobj);
      

      这是我的工作代码

      希望这对你有用..

      快乐编码

      【讨论】:

      • 这不能解决需求(在 JSON OBJ 中传递 null)
      • 我的 Android Studion 没有解析 data.keys() , toList((JSONArray) value);和 toMap((JSONObject) 值);方法
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-14
      • 2016-07-26
      相关资源
      最近更新 更多