package info.jiangpeng.task;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Handler;
import android.view.View;
import info.jiangpeng.SearchBar;
import info.jiangpeng.fragment.BookListFragment;
import info.jiangpeng.helper.CommonBookParser;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class SearchTask extends AsyncTask<String, Integer, String> {
private BookListFragment bookListFragment;
private SearchBar searchBar;
public SearchTask(BookListFragment bookListFragment, SearchBar searchBar) {
this.bookListFragment = bookListFragment;
this.searchBar = searchBar;
}
@Override
protected String doInBackground(String... strings) {
try {
return searchBookList(strings[0]);
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
@Override
protected void onPostExecute(String s) {
parseBookList(s);
}
private String searchBookList(String keyWord) throws Exception {
Uri uri = new Uri.Builder().scheme("http").authority("api.douban.com").path("book/subjects").
appendQueryParameter("alt", "json").
appendQueryParameter("apikey", "0d5f0a33b677be10281d1e9b23673a30").
appendQueryParameter("max-results", "20").
appendQueryParameter("start-index", String.valueOf(bookListFragment.getBookCount())).
appendQueryParameter("q", keyWord).build();
HttpGet request = new HttpGet(uri.toString());
return EntityUtils.toString(new DefaultHttpClient().execute(request).getEntity());
}
private void parseBookList(String rawString) {
try {
System.out.println("------------rawString = " + rawString);
JSONArray entryArray = new JSONObject(rawString).getJSONArray("entry");
searchBar.showProgressBar();
int bookListSize = entryArray.length();
for (int i = 0; i < bookListSize; i++) {
new BookParseTask(bookListFragment, new CommonBookParser()).execute(entryArray.getJSONObject(i));
}
} catch (JSONException e) {
searchBar.hideProgressBar();
e.printStackTrace();
}
}
}