异步GET请求方法接收数据但返回空数组,在调试时工作正常



MainActivity.java

String[] captcha = new String[2];
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getMessle();
}
});
private void getMessle() {
captcha[0] = "before";
captcha[1] = "before2";
RequestClass rc = new RequestClass();
captcha = rc.getCaptcha();
tv.setText(captcha[1]);
}

请求类.java

String[] saResult = new String[2];
public String[] getCaptcha() {
httpUrl = new HttpUrl.Builder()
.scheme(strScheme)
.host(strHost)
.addPathSegments(path)
.build();
request = new Request.Builder()
.url(httpUrl)
.addHeader(header, key)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
saResult[0] = response.header("Set-Cookie");
try {
jsonObject = new JSONObject(response.body().string());
saResult[1] = jsonObject.getString("image_url");
} catch (JSONException je) {
}
}
});
return saResult;
}

我已经检查过了,似乎没有发现任何异常。我也知道我的应用程序也得到了响应,数据肯定在 onResponse(( 中。经过一些扩展测试,看起来我的数组在响应到达之前就被分配了。

captcha = rc.getCaptcha((;

您在提出请求后立即调用它。请求不会执行,也不会有结果。一切都是异步的。

只有在 onResponse(( 中,你才会得到结果。很久以后。例如,在onResponse((中,您应该通过在文本视图中显示结果来处理结果。

最新更新