首页 > 解决方案 > Retrofit2 的响应体在真实设备上为空

问题描述

我在真实设备上遇到了 Retrofit2 的问题,但是它在模拟器上工作,当我使用我的 Samsung J7 2016 或任何其他设备时,响应正文为空,我注意到我的响应代码是 403,使用 phpmyadmin(localhost) 和我的phone 而不是 200 的模拟器。

           OkHttpClient okHttpClient = new OkHttpClient.Builder()
            .connectTimeout(1, TimeUnit.MINUTES)
            .readTimeout(30, TimeUnit.SECONDS)
            .writeTimeout(15, TimeUnit.SECONDS)
            .build();
    Retrofit adapter = new Retrofit.Builder()
            .baseUrl(ROOT_URL)
            .client(okHttpClient)             
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    MyService myService = adapter.create(MyService.class);
    retrofit2.Call<Result> call = myService.connectUser(email,password);
    call.enqueue(new retrofit2.Callback<Result>() {
        @Override
        public void onResponse(retrofit2.Call<Result> call, retrofit2.Response<Result> response) {

            ArrayList<HashMap<String,String>> results = response.body().getData();
        .
        .
        .

         }

        @Override
        public void onFailure(retrofit2.Call<Result> call, Throwable t) {

            showMessage("ERROOR "+ t.getMessage());
            finish();
        }

它返回:

        java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.ArrayList com.example.jamal.mysqlretrofit.results.Result.getData()' on a null object reference

但它适用于 genymotion 模拟器,请你帮忙!

标签: phpmyadminretrofit2

解决方案


我已经修复了问题,我的解决方案是改变:

       # onlineoffline tag - don't remove
       Order Deny,Allow
       Deny from all
       Allow from 127.0.0.1
       Allow from ::1
       Allow from localhost

至 :

       #   onlineoffline tag - don't remove
             Require local
             Require ip 192.168.0

回复在这里:WAMP 无法访问本地网络 403 Forbidden 谢谢大家。


推荐阅读