我写了一个连接到服务器并使用我的用户名和密码登录的程序。它必须将表中的名字和姓氏也返回给app。 当我看到断点时,我在凌空写下这些代码。 但它在响应方法上有延迟.i测试了界面,但它不起作用。当我运行它显示我null但我在日志中看到正确的答案。 我怎么能正确地做到这一点?请帮帮我......
public void logInAdminToServer(JSONObject jsonObject, final VolleyCallback callback) {
JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST,
"http://192.168.43.206/project-server/Admin.php?action=LogInAdmin", jsonObject,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
if (response != null) {
try {
Log.i("Error", response.getString("AdminFirstName") + response.getString("AdminLastName"));
callback.OnSuccess(response.getString("AdminFirstN ame") + "," + response.getString("AdminLastName"));
} catch (JSONException e) {
e.printStackTrace();
}
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i("Error", error.toString());
}
});
request.setRetryPolicy(new DefaultRetryPolicy(5000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Volley.newRequestQueue(G.context).add(request);
}
public interface VolleyCallback {
void OnSuccess(String result);
}
另一个用于在类中获取数据的代码块
public void logInAdmin() {
try {
object.put("AdminUserName", adminUserName);
object.put("AdminPassword", adminPassword);
} catch (JSONException ex) {
ex.printStackTrace();
}
//
//basic login operation
//
thread = new Thread(new Runnable() {
@Override
public void run() {
apiService.logInAdminToServer(object, new ApiService.VolleyCallback() {
@Override
public void OnSuccess(String result) {
if (result != null) {
String str[] = result.split(",");
adminFirstName = str[0];
adminLastName = str[1];
}
}
});
}
});
thread.start();
}
为什么我得到空答案但在日志中显示正确答案。请帮助我。它让我发疯。