2016-07-01 16 views
0

私はVolley androidライブラリを使ってGETリクエストをしようとしていますが、私はサーバをチェックしてリクエストを受け取りましたが、パラメータはありません。私はPOSTとGETでこれを試しましたが、うまくいきませんでした。これはまた、アイブ氏は、クラスを使用して、カスタム要求を作成し、クラス内getParamsメソッドをオーバーライドしようとした私のコードAndroid用のvolleyがGET/POSTリクエストで自分のパラメータを送信しないのはなぜですか?

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

ですが、それは同じ結果を持っています。

は、これは私が使用されるカスタム要求クラスだった:私はURLに私はこのような必要なパラメータを追加することでした溶液で来た私が受け取った答えに

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

私が知る限り、GETはPOSTのようなボディパラメータを使用しません。 POSTの例だけでなく、サーバー側のリクエストをどのようにテストしているのかを表示してください。 –

+1

クリケットが言うように、GETはパラメータを使用せず、そのパラメータをクエリ文字列としてURLに追加します。 –

+0

@GabeSechanさて、私はGET要求でボディーパラメーターを渡すことはできませんが、どうすればAndroidのURLにパラメーターを追加することができますか?私はAlamofireを通常のパラメータとして渡すだけで、iOSでこれを実現しました。 – ravelinx

答えて

0

ありがとう:

文字列url = String.format(myUrl + "?nameOfParameter =%1 $ s"、、parameterContent);

だから、このパラメータ(「T」、「1234」)でGETリクエストを行う必要がある場合

をwww.mypage.com/request/に等しいURLと、私は次のように書きます(ページ必要があります属性から来たが、私はその考えを説明するためにそれを書いた)。

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); 
    } 
関連する問題