package cn.zhaoliang5156.consultation1604k.activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import com.google.common.io.CharStreams;
import com.google.gson.Gson;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import cn.zhaoliang5156.consultation1604k.R;
import cn.zhaoliang5156.consultation1604k.adapter.NewsAdapter;
import cn.zhaoliang5156.consultation1604k.bean.NewsBean;
public class AsyncTaskActivity extends AppCompatActivity {
public static final String TAG = AsyncTaskActivity.class.getSimpleName();
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_async_task);
listView = findViewById(R.id.news_list);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
NewsBean.DataBean.ToutiaoBean toutiaoBean = (NewsBean.DataBean.ToutiaoBean) parent.getAdapter().getItem(position);
Intent intent = new Intent(AsyncTaskActivity.this, WebActivityActivity.class);
intent.putExtra("url", toutiaoBean.getLink());
startActivity(intent);
}
});
// new HttpUrlConnectionGetDataTask().execute("https://www.apiopen.top/journalismApi");
new HttpClientGetDataTask().execute("https://www.apiopen.top/journalismApi");
}
class HttpUrlConnectionGetDataTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... strings) {
try {
URL url = new URL(strings[0]);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
if (connection.getResponseCode() == 200) {
// 使用guava 转换字符流
return CharStreams.toString(new InputStreamReader(connection.getInputStream(), "UTF-8"));
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
Log.i(TAG, "result:" + s);
Gson gson = new Gson();
NewsBean newsBean = gson.fromJson(s, NewsBean.class);
listView.setAdapter(new NewsAdapter(AsyncTaskActivity.this, newsBean.getData().getToutiao()));
}
}
class HttpClientGetDataTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... strings) {
// 1. 创建一个Httpclient 对象
HttpClient client = new DefaultHttpClient();
// 2. 创建一个请求方法 如果get 创建HttpGet 如果是post 就创建HttpPost
HttpGet get = new HttpGet(strings[0]);
try {
// 3. 使用客户端执行方法
HttpResponse response = client.execute(get);
// 4. 读取状态行
if (response.getStatusLine().getStatusCode() == 200) {
// 请求成功
return EntityUtils.toString(response.getEntity());
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
// 解析数据
Gson gson = new Gson();
NewsBean newsBean = gson.fromJson(s, NewsBean.class);
listView.setAdapter(new NewsAdapter(AsyncTaskActivity.this, newsBean.getData().getToutiao()));
}
}
}