Ответ не обновляется из API |Android |модифицировать - PullRequest
0 голосов
/ 22 ноября 2018

Я застрял в проблеме -

Существует API входа в систему - / user / login И я получаю правильный ответ в Почтальоне -

   { "user": {
            "um_id": "6446066c88d44fd787060bc6b662a84d",
            "first_login": false,
            "role": "APPLICANT",
            "name": "riyo riyo",
            "phone": "250231456987",
            "applicant_id": "ea59ab45-760b-4f3d-99a8-f64da3c5a72a" // this is the field which updated at later stage from backend team.
        }
        }

Но когда я звонютот же API из Android-приложения, использующий модификацию, тогда он не дает полного ответа, отсутствует параметр заявитель_идентификатора , который был обновлен на более поздней стадии от бэкэнд-команды.

Ответ от мобильного приложения с использованием Retrofit -

{
 "user": {
            "um_id": "6446066c88d44fd787060bc6b662a84d",
            "first_login": false,
            "role": "APPLICANT",
            "name": "riyo riyo",
            "phone": "250231456987"
        }}

Вы, ребята, видите, что заявитель_ид не приходит при вызове из приложения для Android, но он приходит, если я вызываю тот же API из почтальон .

Вот мой код класса ApiClient.java -

public static Retrofit getClient() {
    if (retrofit == null) {

        OkHttpClient.Builder builder = new OkHttpClient.Builder();
        builder.addInterceptor(new Interceptor() {
            @Override
            public Response intercept(Chain chain) throws IOException {
                Request original = chain.request();

                Request request;
                request = original.newBuilder()
                        .build();

                Response response = chain.proceed(request);

                return response;
            }
        });

        HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        builder.addInterceptor(interceptor);

        OkHttpClient okHttpClient = builder

                .connectTimeout(5*60, TimeUnit.SECONDS)
                .readTimeout(5*60, TimeUnit.SECONDS).
                        build();
        retrofit = new Retrofit.Builder()
                .baseUrl(ApiEndPoint.BASE_URL)

                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .client(okHttpClient)
                .build();

    }
    return retrofit;
}

Вот мой код вызова API -

  ApiHelper mApiHelper = ApiClient.getClient().create(ApiHelper.class);

        LoginRequest mLoginRequest = new LoginRequest();
        mLoginRequest.setClient(client);
        mLoginRequest.setDevicetoken(deviceToken);
        mLoginRequest.setEmail(email);
        mLoginRequest.setPassword(password);

        Gson gson = new GsonBuilder().create();
        Logger.logsError(TAG, "JSON requestModal : " + gson.toJson(mLoginRequest));
        mApiHelper.doLogin(mLoginRequest).enqueue(new Callback<JsonElement>() {
            @Override
            public void onResponse(Call<JsonElement> call, Response<JsonElement> response) {
                Logger.logsError(TAG, "onResponse Called : " + response.toString() + " \n call : " + call.request() + "\n " +
                        response.body() + "\n " + response.errorBody() + "\n " + response.code());
                if (response.code() == 200) {
                    getMvpView().hideLoading();

                    Logger.logsError(TAG, "response  Header auth-token : " + response.headers().get("auth-token"));

                    Gson mGson1  = new Gson();
                    LoginResponse mLoginResponse = mGson1.fromJson(response.body().toString().trim(),
                            LoginResponse.class);
                    MyPreference.setUserData(mLoginResponse);

                    getMvpView().showMessage("login successful");
                    MyPreference.saveUserAuthToken(mLoginResponse.getToken().getAccessToken());
                    Logger.logsError(TAG,"response  BODY : "  + response.body().toString());
                    getMvpView().openHomeScreen();

                } else if (response.code() == 401) {
                    getMvpView().showMessage(R.string.sessionExpireText);
                    getMvpView().openActivityOnTokenExpire();
                } else {
                    getMvpView().onError(R.string.some_error);

                }
            }

            @Override
            public void onFailure(Call<JsonElement> call, Throwable t) {
                Logger.logsError(TAG, "onFailure Called");
                t.printStackTrace();
                getMvpView().hideLoading();
                getMvpView().onError(R.string.some_error);
            }
        });

LoginResponse.class

public class LoginResponse {
    @SerializedName("token")
    @Expose
    private LoginTokenModal token;
    @SerializedName("user")
    @Expose
    private LoginUserData user;

    public LoginTokenModal getToken() {
        return token;
    }

    public void setToken(LoginTokenModal token) {
        this.token = token;
    }

    public LoginUserData getUser() {
        return user;
    }

    public void setUser(LoginUserData user) {
        this.user = user;
    }

}

LoginUserData.class

public class LoginUserData {
    @SerializedName("um_id")
    @Expose
    private String umId;
    @SerializedName("first_login")
    @Expose
    private Boolean firstLogin;
    @SerializedName("role")
    @Expose
    private String role;
    @SerializedName("name")
    @Expose
    private String name;
    @SerializedName("phone")
    @Expose
    private String phone;
    @SerializedName("applicant_id")
    @Expose
    private String applicantId;

    public String getUmId() {
        return umId;
    }

    public void setUmId(String umId) {
        this.umId = umId;
    }

    public Boolean getFirstLogin() {
        return firstLogin;
    }

    public void setFirstLogin(Boolean firstLogin) {
        this.firstLogin = firstLogin;
    }

    public String getRole() {
        return role;
    }

    public void setRole(String role) {
        this.role = role;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getApplicantId() {
        return applicantId;
    }

    public void setApplicantId(String applicantId) {
        this.applicantId = applicantId;
    }
}

LoginTokenModal.class

public class LoginTokenModal {
    @SerializedName("access_token")
    @Expose
    private String accessToken;
    @SerializedName("token_type")
    @Expose
    private String tokenType;
    @SerializedName("refresh_token")
    @Expose
    private String refreshToken;
    @SerializedName("expires_in")
    @Expose
    private Integer expiresIn;
    @SerializedName("scope")
    @Expose
    private String scope;

    public String getAccessToken() {
        return accessToken;
    }

    public void setAccessToken(String accessToken) {
        this.accessToken = accessToken;
    }

    public String getTokenType() {
        return tokenType;
    }

    public void setTokenType(String tokenType) {
        this.tokenType = tokenType;
    }

    public String getRefreshToken() {
        return refreshToken;
    }

    public void setRefreshToken(String refreshToken) {
        this.refreshToken = refreshToken;
    }

    public Integer getExpiresIn() {
        return expiresIn;
    }

    public void setExpiresIn(Integer expiresIn) {
        this.expiresIn = expiresIn;
    }

    public String getScope() {
        return scope;
    }

    public void setScope(String scope) {
        this.scope = scope;
    }

}
...