La méthode retourne avant la fin de l’exécution?

Mes compétences en Java sont assez bonnes, mais je n’arrive toujours pas à comprendre ce qui se passe ici. Je programme une application Android et je programme actuellement une classe qui utilise l’API Google Volley pour interagir avec un serveur Web. Le problème est que je veux que la classe soit appelée comme ceci:

Server_interaction s_i = new Server_interaction(getApplication); Ssortingng text = s_i.post_request(); 

Le texte devrait maintenant contenir la requête post retournée, dans mon cas la chaîne “Hello from server”. Au lieu de cela, il s’avère nul. Cela se produit parce que la méthode post_request semble revenir avant d’avoir exécuté la post_request.

Voici la classe Server_interaction:

 public class Server_interaction { Ssortingng server_url = "someipadress/greeting.php"; //this address is correct, but I want to hide it for you guys :) Ssortingng response_ssortingng; Context myContext; RequestQueue requestQueue; public static final Ssortingng TAG = Server_interaction.class.getSimpleName(); /* Here we add a constructor that takes in context. We need a context for volley requestqueue, and this is an elegant way*/ public Server_interaction(Context context) { myContext = context; requestQueue = Volley.newRequestQueue(myContext); } public Ssortingng post_request() { SsortingngRequest ssortingngRequest = new SsortingngRequest(Request.Method.POST, server_url, new Response.Listener() { @Override public void onResponse(Ssortingng response) { response_ssortingng = response; requestQueue.stop(); Log.i(TAG, "the response is: "+ response_ssortingng); } } , new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { response_ssortingng = "Something went wrong"; //error.printstacktrace() requestQueue.stop(); } } ); //ssortingngrequest parameter end //add request to requestqueue requestQueue.add(ssortingngRequest); Log.i(TAG, "the response again:: "+ response_ssortingng); return response_ssortingng; } 

}

Lors de l’exécution, logcat affiche ceci:

 01-22 19:00:44.878 2954-2954/com.example.koenraad.Exigentia I/Server_interaction: the response again:: null 01-22 19:00:44.926 2954-2954/com.example.koenraad.Exigentia I/Server_interaction: the response is: hello from server 

Donc, cela signifie que la chaîne est nulle lorsqu’elle est renvoyée, puis après elle est définie. Comment cela peut-il être corrigé?

Merci d’avance!

Votre code est asynchrone.

L’object SsortingngRequest créé dans la méthode post_request() sera utilisé par le framework après le retour de la méthode.