即使没有互联网连接,也会在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。
答案 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
是否为空来进行检查。