package nglauber.android.databinding.http; import android.os.AsyncTask; import java.lang.ref.WeakReference; import java.util.List; import nglauber.android.databinding.BookListFragment; import nglauber.android.databinding.model.Book; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; public class BookTask extends AsyncTask<String, Void, List<Book>> { public static final String API_KEY = "AIzaSyDXADjahAioclU-RoLfVG21fKz77J7gYtc"; public static final String BASE_URL = "https://www.googleapis.com/books/v1/volumes?q=%s&key="+ API_KEY; private WeakReference<BookListFragment> fragment; public BookTask(BookListFragment fragment) { this.fragment = new WeakReference<>(fragment); } public void setFragment(BookListFragment fragment) { this.fragment = new WeakReference<>(fragment); } @Override protected List<Book> doInBackground(String... params) { OkHttpClient client = new OkHttpClient(); final String args = params[0]; final String url = String.format(BASE_URL, args); Request request = new Request.Builder() .url(url) .build(); try { Response response = client.newCall(request).execute(); String jsonString = response.body().string(); List<Book> books = BookHttp.getEditoraFromJson(jsonString); return books; } catch (Exception e){ e.printStackTrace(); } return null; } @Override protected void onPostExecute(List<Book> books) { super.onPostExecute(books); BookListFragment llf = fragment.get(); if (llf == null) return; if (books != null){ llf.setLivros(books); } else { llf.showError(); } } }