2016-07-01 6 views
0

Ich versuche, eine GET-Anfrage mit Volley Android-Bibliothek zu machen, aber wenn ich tun, überprüfe ich den Server und die Anfrage wurde empfangen, aber die Parameter nicht. Ich habe dies mit POST und GET versucht, aber keiner hat funktioniert. Dies ist mein CodeWarum sendet Volley für Android meine Parameter nicht in meinen GET/POST-Anfragen?

StringRequest stringRequest = new StringRequest(Request.Method.GET, all , 
       new Response.Listener<String>() { 
        @Override 
        public void onResponse(String response) { 
         Toast.makeText(MainActivity.this,response,Toast.LENGTH_LONG).show(); 
        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         Toast.makeText(MainActivity.this,error.toString(),Toast.LENGTH_LONG).show(); 
        } 
       }){ 
      @Override 
      protected Map<String,String> getParams(){ 
       Map<String,String> params = new HashMap<String, String>(); 
       params.put("t","inVLlhZ0I29tPpoLGpBO9KzVI0zM-3ED3KiTcAuCUJ65TBbUZBnmCg"); 
       return params; 
      } 

     }; 

     RequestQueue requestQueue = Volley.newRequestQueue(this); 
     requestQueue.add(stringRequest); 

Auch Ive versucht, eine Klasse verwenden und eine benutzerdefinierte Anforderung und Überschreiben der getParams Methode innerhalb der Klasse zu schaffen, aber es das gleiche Ergebnis.

Dies war die individuelle Anfrage Klasse I verwendet:

public class CustomRequest extends Request<JSONObject> { 

    private Listener<JSONObject> listener; 
    private Map<String, String> params; 

    public CustomRequest(String url, Map<String, String> params, 
         Listener<JSONObject> reponseListener, ErrorListener errorListener) { 
     super(Method.GET, url, errorListener); 
     this.listener = reponseListener; 
     this.params = params; 
    } 

    public CustomRequest(int method, String url, Map<String, String> params, 
         Listener<JSONObject> reponseListener, ErrorListener errorListener) { 
     super(method, url, errorListener); 
     this.listener = reponseListener; 
     this.params = params; 
    } 

    protected Map<String, String> getParams() 
      throws com.android.volley.AuthFailureError { 
     return params; 
    }; 

    @Override 
    protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) { 
     try { 
      String jsonString = new String(response.data, 
        HttpHeaderParser.parseCharset(response.headers)); 
      return Response.success(new JSONObject(jsonString), 
        HttpHeaderParser.parseCacheHeaders(response)); 
     } catch (UnsupportedEncodingException e) { 
      return Response.error(new ParseError(e)); 
     } catch (JSONException je) { 
      return Response.error(new ParseError(je)); 
     } 
    } 

    @Override 
    protected void deliverResponse(JSONObject response) { 
     // TODO Auto-generated method stub 
     listener.onResponse(response); 
    } 

} 
+3

Soweit ich weiß, verwendet GET keine Körperparameter wie POST. Bitte zeigen Sie ein POST-Beispiel sowie wie Sie die Anfrage auf der Serverseite testen –

+1

Wie Cricket sagt, GET verwendet keine Parameter, es hängt seine Parameter als Abfrage-String an die URL. –

+0

@GabeSechan Ok, ich bekomme jetzt, dass ich Körperparams in einer GET-Anfrage nicht übergeben kann, aber wie kann ich erreichen, dann die Parameter an die URL in Android anzuhängen ?. Das habe ich in iOS mit Alamofire erreicht, indem ich sie einfach als normale Parameter übergeben habe. – ravelinx

Antwort

0

Dank der Antworten, die ich erhielt ich mit einer Lösung gekommen, die die Parameter an die URL anhängen war ich so benötigt:

String url = String.format (myUrl + "? NameOfParameter =% 1 $ s", ParameterContent);

Also, wenn Bedarf eine GET-Anforderung mit diesem Parameter („t“, „1234“) mit einer URL gleich zu machen www.mypage.com/request/

Ich würde schreibt die folgende (Die Seite sollte komme von einem Attribut, aber ich schrieb es, um die Idee zu erklären);

public void request() { 

     String url = String.format("www.mypage.com/request/" + "?t=%1$s","1234"); 

     StringRequest stringRequest = new StringRequest(Request.Method.GET, pos , 
       new Response.Listener<String>() { 
        @Override 
        public void onResponse(String response) { 
         // Code here 
        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         // Code here 
        } 
       }); 
     RequestQueue requestQueue = Volley.newRequestQueue(this); 
     requestQueue.add(stringRequest); 
    }