Ответ нулевой в модификации Android 2 с параметром и заголовком - PullRequest
0 голосов
/ 18 декабря 2018

Когда я запускаю приложение и заполняю адрес электронной почты / пароль, он показывает нулевой ответ (response.body() != null && response.isSuccessful()) Когда я регистрируюсь, onFailure () ничего не показывает, а onResponse () показывает ноль.Как я могу решить эту проблему?

MainApi,

public final class MainApi {

    private static String BASE_URL = "http://www.eg.com/";

    private static Retrofit.Builder builder = new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .client(new OkHttpClient());

    public MainApi() {
    }

    public static <S> S createService(Class<S> serviceClass) {
        Retrofit retrofit = builder.build();
        return retrofit.create(serviceClass);
    }
}

Интерфейс MainService,

public interface MainService {

    @Headers({"Content-Type: application/json", "Authorization: Bearer fafafafafafa"})
    @FormUrlEncoded
    @POST("auth")
    Call<Auth> postAuth(@Field("email") String email,
                        @Field("password") String password;
}

Activty,

Call<Auth> call = MainApi.createService(MainService.class).postAuth(edt_email.getText().toString(), edt_password.getText().toString());

1 Ответ

0 голосов
/ 18 декабря 2018
  public final class MainApi {

        private static String BASE_URL = "http://www.eg.com/";
        private static MainService api;//added line
        private static Retrofit.Builder builder;

         public static MainService get(){
           if(builder== null){
            builder = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .client(getClient());
                 api = builder.build().create(MainService.class);//add this line 
         }

        return api;
         }

        //Add this code
        private static OkHttpClient getClient() {
            HttpLoggingInterceptor logging = new HttpLoggingInterceptor();

            logging.setLevel(HttpLoggingInterceptor.Level.BODY);
            return new OkHttpClient.Builder()
                    .addInterceptor(logging)
                    .connectTimeout(120, TimeUnit.SECONDS)
                    .readTimeout(120, TimeUnit.SECONDS)
                    .writeTimeout(120, TimeUnit.SECONDS).build();
        }


        public MainApi() {
        }

        public static <S> S createService(Class<S> serviceClass) {
            Retrofit retrofit = builder.build();
            return retrofit.create(serviceClass);
        }
        }
...