Das Netzwerk fordert eine Mobiltelefonnummer an und das Ergebnis gibt Null zurück, da die Funktion „return“ ausführt, ohne auf die Rückkehr der Netzwerkanforderung zu warten. Wie ändere ich den folgenden Code?
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];
}
当然要用CountDownLatch 啦,异步请求转阻塞式同步请求
我觉得你这个函数有问题啊,那个形参id在里面没用到啊,很奇怪。假如想要获取异步的数据,最常用的的就是异步回调,你以后可以试下RXJava,会发现惊喜。
把这个函数改写下,如下:
在调用的时候,可以是