HttpUrlConnection+Handler 和 HttpClient+AsyncTask 实现页面的基本操作
2017-10-10 20:02
218 查看
package com.example.myzhoukao_one.Activity; import android.os.AsyncTask; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.widget.ListView; import android.widget.TextView; import com.example.myzhoukao_one.R; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.conn.ssl.AllowAllHostnameVerifier; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.impl.client.DefaultHttpClient; import org.json.JSONArray; import org.json.JSONException; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.lang.reflect.Type; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private TextView textView; private ListView listView; private int index = 0; private List<String> list = new ArrayList<>(); private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { if(msg.what == 0){ String json = (String) msg.obj; Log.i("---",json); Gson gson = new Gson(); Type type = new TypeToken<List<String>>() {}.getType(); List<String> jsonList = gson.fromJson(json,type); Log.i("----",jsonList.size()+"长度"); try { JSONArray jsonArray = new JSONArray(json); for (int i=0; i<jsonArray.length();i++){ String string = jsonArray.getString(i); list.add(string); } textView.setText(list.get(index)); handler.sendEmptyMessageDelayed(1,3000); } catch (JSONException e) { e.printStackTrace(); } }else if( msg.what == 1){ index ++; index = index%list.size(); textView.setText(list.get(index)); handler.sendEmptyMessageDelayed(1,3000); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.text_tou); listView = (ListView) findViewById(R.id.list_view); getTouTiao(); getListViewData(); } private void getListViewData() { AsyncTask<Void,Void,String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { try { SSLSocketFactory.getSocketFactory().setHostnameVerifier(new AllowAllHostnameVerifier()); HttpClient client = new DefaultHttpClient(); HttpGet httpGet = new HttpGet("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page=1"); HttpResponse httpResponse = client.execute(httpGet); int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode == 200){ InputStream inputStream = httpResponse.getEntity().getContent(); String json = streamToString(inputStream,"utf-8"); return json; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(s, DataDataBean.class); List<DataDataBean.NewslistBean> newslist = dataDataBean.getNewslist(); //设置适配器 MyAdapter myAdapter = new MyAdapter(newslist, MainActivity.this); listView.setAdapter(myAdapter); } }; asyncTask.execute(); } private void getTouTiao(){ new Thread(){ @Override public void run(){ try { URL url = new URL("http://www.toutiao.com/hot_words/"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setReadTimeout(5000); connection.setConnectTimeout(5000); int responseCode = connection.getResponseCode(); if(responseCode == 200){ InputStream inputStream = connection.getInputStream(); String json = streamToString(inputStream,"utf-8"); Message message = Message.obtain(); message.what = 0; message.obj = json; handler.sendMessage(message); } } catch (Exception e) { e.printStackTrace(); } } }.start(); } private String streamToString(InputStream inputstream,String charset){ try { InputStreamReader inputStreamReader = new InputStreamReader(inputstream,charset); BufferedReader bufferedreader = new BufferedReader(inputStreamReader); String s; StringBuilder builder = new StringBuilder(); while((s=bufferedreader.readLine())!=null){ builder.append(s); } bufferedreader.close(); return builder.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } }
相关文章推荐
- 通过Freemarker实现页面静态化的基本操作
- Centos 6.9中 http-2.2 中的一些基本操作和 https 的实现
- 原生无框架JDBC实现数据库连接和Servlet页面的基本操作
- 实现Web页面内容动态改变的dhtml操作http://www.knowsky.com/4074.html
- python数据结构之链表——基本操作实现
- 数据结构-循环队列的基本实现操作
- 实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。
- 二叉搜索树(BST,基本操作实现)
- 实验一 线性表的基本操作实现及其应用
- Android操作HTTP实现与服务器通信
- java实现二叉树基本操作
- HTTP与AJAX深入揭秘,不使用AJAX实现页面无刷新
- 网络编程(4)——HttpURLConnection/HttpClient基本实现
- HttpClient和HtmlParser配合实现自动登陆系统抽取页面信息
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- 栈的链式存储 c实现的几种基本操作
- java自己实现单链表的基本操作
- 使用HttpWebRequest和HttpWebResponse实现模拟登录需要登陆后才可以访问的页面
- Centos 7.4 中http-2.4 的基本实现和 https 的实现
- 实现Stack的基本操作