Le réseau demande un numéro de téléphone mobile, et le résultat renvoie nul, car la fonction exécute return sans attendre le retour de la requête réseau. Comment modifier le code suivant ?
public String getPhone(String id) {
String url = "http://www.163.net/";
final String[] phone = new String[1];
OkHttpUtils
.get()
.url(url)
.addParams("username", "abc")
.addParams("password", "123")
.build()
.execute(new StringCallback() {
@Override
public void onError(Call call, Exception e, int id) {
}
@Override
public void onResponse(String response, int id) {
phone[0] = response;
}
});
return phone[0];
}
Bien sûr, vous devez utiliser CountDownLatch pour convertir les requêtes asynchrones en requêtes synchrones bloquantes
Je pense qu'il y a quelque chose qui ne va pas avec votre fonction. Le paramètre formel id n'y est pas utilisé, ce qui est très étrange. Si vous souhaitez obtenir des données asynchrones, la plus couramment utilisée est le rappel asynchrone. Vous pouvez essayer RXJava à l'avenir et vous serez surpris.
Réécrivez cette fonction comme suit :
Lorsque vous appelez, ça peut être