我使用Retrofit GET请求调用api。此GET请求需要一个参数。当我使用POSTMAN进行测试时,API工作正常,但当我尝试使用下面的API调用时返回
对象引用未设置为对象的实例。
@GET("/api/account/*******")
Call<ResetPassword> requestPasswordResetToken(@Query("phoneNumber") String phoneNumber);
以及我在活动中如何提出请求的代码。
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期望的屏幕截图。字段名称是正确的。
答案 0 :(得分:1)
您的代码看起来不错。你检查你正在使用的api的结果格式吗?并且ResetPassword类属性(变量名和类型)必须与api的响应相同。 (注意大写或小写字母)。
并尝试此格式请求
@GET("methodName/{PARAMETER}")
Call<Object> getData(
@Path("telephoneNumber") String telephoneNumber
);
答案 1 :(得分:0)
确保您拨打的方法正确,您似乎拨打了requestPasswordResetToken
,但在界面中显示resendVerification
。