使用参数改进GET请求

时间:2018-02-12 11:10:54

标签: java android rest retrofit2

我使用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期望的屏幕截图。字段名称是正确的。

This is what the API expects.

2 个答案:

答案 0 :(得分:1)

您的代码看起来不错。你检查你正在使用的api的结果格式吗?并且ResetPassword类属性(变量名和类型)必须与api的响应相同。 (注意大写或小写字母)。

并尝试此格式请求

  @GET("methodName/{PARAMETER}")
Call<Object> getData(
        @Path("telephoneNumber") String telephoneNumber
);

答案 1 :(得分:0)

确保您拨打的方法正确,您似乎拨打了requestPasswordResetToken,但在界面中显示resendVerification