Я использую библиотеку для дооснащения, чтобы загрузить JSON и обработать ее с помощью GSON, чтобы показать результаты в программе повторного просмотра.Однако некоторые из моих пользователей жалуются, что они получают ошибку «нет интернета», даже когда они подключены к сети.Кто-нибудь может указать, что мне не хватает в моем коде.Заранее спасибо.
Вот мой код API.
public class BhartiAPI {
public static final String url = "https://www.ddbharat.com/api/";
public static PostService postService = null;
public static PostService getService() {
if(postService == null) {
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.readTimeout(60, TimeUnit.SECONDS)
.connectTimeout(60 / 2, TimeUnit.SECONDS)
.writeTimeout(60, TimeUnit.SECONDS)
.cache(null)
.build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(url)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create())
.build();
postService = retrofit.create(PostService.class);
}
return postService;
}
public interface PostService {
@Headers("Cache-Control: no-cache")
@POST
Call<PostList> getPostList(@Url String url);
}
И вот как я его называю.
final String url = BhartiAPI.url + fileName;
final Call<PostList> postList = BhartiAPI.getService().getPostList(url);
postList.enqueue(new Callback<PostList>() {
@SuppressLint("ResourceType")
@Override
public void onResponse(Call<PostList> call, Response<PostList> response) {
if (response.isSuccessful()) {
noNet.setVisibility(View.GONE);
list = response.body();
items.addAll(list.getItems());
adapter.notifyDataSetChanged();
progressBar.setVisibility(View.GONE);
} else {
// error case
switch (response.code()) {
case 404:
getData2("news");
break;
case 500:
getData2("news");
break;
default:
getData2("news");
break;
}
}
}
@Override
public void onFailure(Call<PostList> call, Throwable t) {
if (t instanceof UnknownHostException) {
noNet.setVisibility(View.VISIBLE);
} else if (t instanceof IOException) {
noNet.setVisibility(View.GONE);
} else {
noNet.setVisibility(View.GONE);
}
getData2("news");
}
});
Здесь иногда это 'if (tinstanceof UnknownHostException) 'вызывается снова и снова, даже когда интернет подключен и работает нормально.