2016-09-13 5 views
1

ich habe Array wie folgt aussehenPassarraydaten als Parameter Volley

arrayname[{"code" : "abc","code2":"cba",}] 

i senden möchte es als Paramater, steckte es in getParam() Funktion mit Volley zu meinem Server

das Problem Blick ähnlich zu diese

Volley pass array as parameters

jede Hilfe, wie es zu tun?

Dank im Voraus

+0

Wissen Sie, wie einzelne Daten aus dem Volley-Bibliothek Server zu übergeben, weil ich nicht auf der Volley Bibliothek gearbeitet hatte –

+0

ich eine Antwort haben Dazu musste ich das auch tun .... bitte warten ... –

+0

etwas guckt diese geschützte Map getParams() { ArrayList numbers = new ArrayList (); Nummern.add (Kode); Nummern.add ("1"); Zuordnung params = new HashMap (); params.put ("req", "req"); params.put ("msisdn", msisdn); params.put ("tujuan", Nomor); –

Antwort

0

Dafür müssen Sie JsonArrayRequest machen. In Volley gibt es die JsonArrayRequest-Klasse, die für die JsonArray-Anfrage verwendet wird.

Dies ist die in der JsonArrayRequest-Klasse verfügbare Methode.

public JsonArrayRequest(int method, String url, JSONArray jsonRequest, 
      Listener<JSONArray> listener, ErrorListener errorListener) { 
     super(method, url, (jsonRequest == null) ? null : jsonRequest.toString(), listener, 
       errorListener); 
    } 

Kann sein, das wird Ihnen helfen:

JSONArray jArrayInput=new JSONArray(); 
JSONObject jObjectInput=new JSONObject(); 
jObjectInput.put("code", abc); 
jObjectInput.put("code2", cba); 
jArrayInput.put(jObjectInput); 

JsonArrayRequest request = new JsonArrayRequest(Method.POST, /*Your base url*/, jArrayInput , new Response.Listener<JSONArray>() { 
       @Override 
       public void onResponse(JSONArray response) { 
        //Here success response 
       } 
      }, new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        //Here error response 
       } 
      }); 
      MyVolley.getRequestQueue().add(request); 
+0

danke! Seine Arbeit –

0

ich nicht auf der Volley-Bibliothek gearbeitet hatte, benutzte ich AsyncHttpClient: Die Logik, die Sie hier wie folgt anwenden:

JSONArray jsonArray=new JSONArray(); 
JSONObject jsonObject=new JSONObject(); 
jsonObject.put("code", abc); 
jsonObject.put("code2", cba); 
jsonArray.put(jsonObject);// this you need to pass using volley library 
+0

danke, schon gefunden die Lösung –

1

Hier ist eine Methode in einer App habe ich das macht, was du versuchst zu tun. (Ich denke?)

Mein Problem war, dass ich mehrere Post-Parameter hatte, die ich senden wollte, aber einer von ihnen war ein Array.

Zum Beispiel:

http://www.yourDB.com/getData.php?param1=blah&param2=blah&param3=[ [array] ]. 

So ... um sicherzustellen, dass die PHP-Seite versteht, dass ich ein Array bin das Senden, füge ich Daten auf das Array wie folgt (man beachte den ‚[]‘ folgend der Param).

postParams.add(new String[]{"param3[]", itemName}); 

So ... der Server sieht folgendermaßen aus:

http://www.yourDB.com/getData.php?param1=blah&param2=blah&param3[]=item1&param3[]=item2&param3[]=item3... 

Der Schlüssel zu verstehen, ist dieser Teil:

"@Override 
     public byte[] getBody() throws AuthFailureError {" 

Der Trick ist, dass Sie eine Arraylist von String-Arrays senden in die Methode und überschreiben Sie den getBody() Teil wie folgt:

private void Url_2_Adapter(String url, final ArrayList<String[]> postParams) { 

    StringRequest stringRequest = new StringRequest(Request.Method.POST, url, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 

        // do something with response 

       } 
      }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      // Log.i(TAG, "WE HAD ERROR " + error.toString()); 

      try { 
       Toast.makeText(getActivity(), "Server says: Error code " + error.networkResponse.statusCode + "\nIf this continues, please report it! Thanks.", Toast.LENGTH_LONG).show(); 
      } 

      catch (Exception e){ 

      } 

     } 
    }) { 
     @Override 
     public byte[] getBody() throws AuthFailureError { 

      StringBuilder result = new StringBuilder(); 
      boolean first = true; 

      for (String[] entry : postParams) 
      { 
       if (first) { 
        first = false; 
       } else { 
        result.append("&"); 
       } 
       try { 
        result.append(URLEncoder.encode(entry[0], "UTF-8")); 
        result.append("="); 
        result.append(URLEncoder.encode(entry[1], "UTF-8")); 
       } catch (UnsupportedEncodingException e) { 
        // this basically will never happen :) 
       } 
      } 
      return result.toString().getBytes(); 
     } 
    }; 
    Z_VolleySingleton.getInstance().getRequestQueue().add(stringRequest); 

} 
+1

Sorry ... l diese Antwort macht mehr Sinn, wenn Ihr Array wie folgt ist: paramname ["item1", "item2", item3 "," item4 "," item5 "... ] –

+0

es ist ok..danke für die Hilfe btw: D –