代码之家  ›  专栏  ›  技术社区  ›  Shoeb Siddique

API |安卓|改造未更新响应

  •  1
  • Shoeb Siddique  · 技术社区  · 6 年前

    我陷入了一个问题-

    有一个登录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.
            }
            }
    

    但是,当我使用改型从Android应用程序调用相同的API时,它并没有给出完整的响应,它丢失了 申请人身份证 后期从后端团队更新的param。

    使用改装的移动应用程序的响应-

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

    你们可以看到 申请人身份证 从Android应用程序调用时不会出现,但如果我从Android应用程序调用相同的API,则会出现 邮递员 .

    这是我的客户。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);
                }
            });
    

    登录回复。班

    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;
        }
    
    }
    

    罗吉努塞尔达酒店。班

    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;
        }
    }
    

    罗金托肯莫代尔酒店。班

    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;
        }
    
    }
    
    0 回复  |  直到 6 年前