我使用 Retrofit GET 请求调用 api。此 GET 请求需要一个参数。当我使用 POSTMAN 进行测试时,API 工作得很好,但是当我尝试使用下面的 API 调用时,它会返回
Object reference not set to an instance of an object.
@GET("/api/account/*******")
Call<ResetPassword> requestPasswordResetToken(@Query("phoneNumber") String phoneNumber);
以及我如何在 Activity 中提出该请求的代码。
public void requestPasswordResetToken(String phoneNumber) {
Retrofit retrofit = RetrofitClient.getClient("");
APIService mAPIService = retrofit.create(APIService.class);
final ProgressDialog loading = ProgressDialog.show(this, "Please Wait", "Loading your information...", false, false);
loading.setCancelable(true);
loading.show();
mAPIService.requestPasswordResetToken(phoneNumber).enqueue(new Callback<ResetPassword>() {
@Override
public void onResponse(Response<ResetPassword> response, Retrofit retrofit) {
if(response.isSuccess()) {
String loginSuccess = response.body().getSuccess();
String message = response.body().getMessage();
if (loginSuccess.equals("true")) {
loading.dismiss();
showSnackMessage(message);
}else {
Log.e("loginError", message);
Toast.makeText(RequestPasswordResetActivity.this, message, Toast.LENGTH_LONG).show();
loading.dismiss();
}
}
}
@Override
public void onFailure(Throwable throwable) {
Log.e("ResetPasswordError", throwable.getMessage());
Toast.makeText(RequestPasswordResetActivity.this, "Unable to Login, Please Try Again", Toast.LENGTH_LONG).show();
loading.dismiss();
}
});
}
API 期望的屏幕截图。字段名称正确。
最佳答案
你的代码看起来不错。你检查一下你正在处理的api的结果格式吗?并且 ResetPassword 类属性(变量名称和类型)必须与 api 的响应相同。 (注意大小写字母)。
并尝试此格式请求
@GET("methodName/{PARAMETER}")
Call<Object> getData(
@Path("telephoneNumber") String telephoneNumber
);
关于java - 带参数改造 GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48745066/