2017-06-24 1 views
2

Je suis nouveau en Java. Je veux envoyer des données post json au serveur web. Mon poste de Volley est donné ci-dessous.Android Volley Post JSON données au serveur

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); 

} 

Voici mon code 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"; 

Je veux publier des données JSON à ma méthode PostData. Comment puis-je publier ces données json sur mon serveur?

+0

'new JsonObjectRequest (Request.Method.POST, url, null,' troisième paramètre si pour les paramètres JSONObject. remplacer null avec votre jsondata –

Répondre

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); 

    } 

maintenant, de votre classe 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 
0
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); 

c'est le code de travail pour moi

Espérons que cela pourrait être le travail pour vous ..

Bonne Codding

+0

cela ne résout pas l'exigence (passant null dans JSON OBJ) – jagapathi

+0

mon Android Studion n'a pas résolu data.keys(), toList ((JSONArray) valeur); et toMap (valeur (JSONObject)); méthode – alien

1
public void postData(String url,JSONObject data,final VolleyCallback mResultCallback){ 
RequestQueue requstQueue = 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); 

}