改造2 onResponse被要求没有互联网

时间:2017-07-06 06:59:57

标签: android retrofit2 okhttp3

即使没有互联网连接,也会在onResponse()上进行改造2 的build.gradle:

  compile 'com.google.code.gson:gson:2.7'
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'com.squareup.okhttp:okhttp:2.4.0'


代码:

Call<ArrayList<Repository>> call = mViewsApiEnd.getRepository("rajuse");

                call.enqueue(new Callback<ArrayList<Repository>>() {
                    @Override
                    public void onResponse(@NonNull Call<ArrayList<Repository>> call, @NonNull Response<ArrayList<Repository>> response) {
                        if (response.code()==200) {
                            }
                    }

                    @Override
                    public void onFailure(Call<ArrayList<Repository>> call, Throwable t) {
                        tv_response.setText("Retrofit onFailure got called :(");
                    }

重新创建的步骤:
互联网存在时发出api电话 2.关闭互联网
打个电话 onResponse()被称为

更新 我发现这是改造中的一种未实现的功能。请参考我的解决方法并发布:

https://github.com/square/retrofit/issues/2390

其他图书馆如volley不会调用成功回调。而是在错误回调中给出ioexception。

2 个答案:

答案 0 :(得分:0)

是失败或成功它应该得到回应

所以像这样处理它

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    // enable Cordova apps to be started in the background
    Bundle extras = getIntent().getExtras();
    if (extras != null && extras.getBoolean("cdvStartInBackground", false)) {
        moveTaskToBack(true);
    }

    // Set by <content src="index.html" /> in config.xml

    if(appView == null)
              init();

    WebView webView = (WebView)appView.getView();
    WebSettings settings = webView.getSettings();
    settings.setLoadWithOverviewMode(true);
   settings.setUseWideViewPort(true);

   loadUrl(launchUrl);
}

答案 1 :(得分:0)

基于杰克沃顿的comment

  

您启用了HTTP缓存,因此很可能是从缓存中提供响应。您可以通过查看来自Retrofit的cacheResponse()对象的raw() OkHttp响应中的Response是否为空来进行检查。