2015-08-31 1 views
0

Je viens de commencer à utiliser la bibliothèque de Volley pour faire des appels http, et j'ai essayé d'utiliser la classe RequestFuture pour les requêtes synchrones, mais j'échoue ma tentative de faire une simple requête. Une idée de ce que je fais mal?Demande synchrone Volley

RequestQueue requestQueue = Volley.newRequestQueue(this); 
    String url = "http://myapi-oh.fr/v2/podcasts/x/shows/" + points.get(0).getShowId() + "/streams"; 

    RequestFuture<JSONObject> future = RequestFuture.newFuture(); 
    JsonObjectRequest request = new JsonObjectRequest(url, null, future, future); 
    requestQueue.add(request); 


    try { 
     JSONObject response = future.get(10, TimeUnit.SECONDS);; // this will block (forever) 
     points.get(0).setStreamUrl(response.getJSONArray("result").getJSONObject(0).getString("url")); 
    } catch (InterruptedException e) { 
     Log.d(TAG, "error : " + e); 
     // exception handling 
     Log.d(TAG, "error : " + e); 
    } catch (ExecutionException e) { 
     // exception handling 
     Log.d(TAG, "error : " + e); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
     Log.d(TAG, "error : " + e); 
    } catch (TimeoutException e) { 
     e.printStackTrace(); 
    } 

Répondre

-1

Pour faire une requête simple, utilisez simplement la classe StringRequest. Ci-dessous est un petit extrait:

// Instantiate the RequestQueue. 
RequestQueue queue = Volley.newRequestQueue(this); 

StringRequest req = new StringRequest(Request.Method.POST, "your_url", new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       //handle response here. 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       error.printStackTrace(); 
       //handle error here. 
      } 
     }){ 
      @Override 
      protected Map<String, String> getParams() throws AuthFailureError { 
       //return params(if any) to server here. 
       return super.getParams(); 
      } 
     }; 
queue.add(req); 
+1

Oui, je l'ai déjà fait dans d'autres cas, mais cette fois je veux le rendre synchrone! – krakig