根据接口获取网页内容 并且更新到ListView

来源:互联网 发布:做账软件免费 编辑:程序博客网 时间:2024/06/05 14:11
//最重要的几步
//MainActivity 

import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.widget.ListView;import com.google.gson.Gson;import java.util.ArrayList;import java.util.List;

public class MainActivity extends AppCompatActivity {
private ListView mListView;
private List<News.DataBean> mList;
private
NewsAdapter mAdapter;
private Handler mHandler = new Handler() {
@Override public void handleMessage(Message msg) {
String str = msg.obj.toString();
Gson gson = new Gson();
News news = gson.fromJson(str, News.class);
mList.addAll(news.getData());
mAdapter.notifyDataSetChanged();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
mListView = (ListView) findViewById(R.id.listview);
mList = new ArrayList<>();
mAdapter = new NewsAdapter(this, mList);
mListView.setAdapter(mAdapter);
//get
new Thread() {
@Override
public void run() {
String result =
NetUtils.getUrlConnect("http://api.expoon.com/AppNews/getNewsList/type/1/p/1");
if (result != null) {
Message msg = Message.obtain();
msg.what = 0;
msg.obj = result;
mHandler.sendMessage(msg);
}
}
}.start();
}}















//NetUtils

import android.util.Log;import java.io.InputStream;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.URL;import java.util.Map;public class NetUtils {    /**             * HttpURLConnection的post请求             * @param urlPath             * @param map             * @return             */            public static String postUrlConnect(String urlPath, Map<String,Object> map){               StringBuffer sbRequest =new StringBuffer();                if(map!=null&&map.size()>0){                    for (String key:map.keySet()){                        sbRequest.append(key+"="+map.get(key)+"&");                    }                }                String request = sbRequest.substring(0,sbRequest.length()-1);                try {                    //创建URL                    URL url = new URL(urlPath);                    //由URL的openConnection方法得到一个HttpURLConnection(需要强转)                    HttpURLConnection httpURLConnection =                            (HttpURLConnection) url.openConnection();                    //设置post提交                    httpURLConnection.setRequestMethod("POST");                    //设置超时时间                    httpURLConnection.setConnectTimeout(30000);                    httpURLConnection.setReadTimeout(30000);                    httpURLConnection.setDoInput(true);                    httpURLConnection.setDoOutput(true);                    //把请求正文通过OutputStream发出去                    OutputStream os =httpURLConnection.getOutputStream();                    os.write(request.getBytes());                    os.flush();                    //判断响应码  200 代表成功                    if(httpURLConnection.getResponseCode()==200){                        //由HttpURLConnection拿到输入流                        InputStream in=httpURLConnection.getInputStream();                        StringBuffer sb=new StringBuffer();                        //根据输入流做一些IO操作                        byte [] buff =new byte[1024];                        int len=-1;                        while((len=in.read(buff))!=-1){                            sb.append(new String(buff,0,len,"utf-8"));                        }                        in.close();                        os.close();                        httpURLConnection.disconnect();                        return  sb.toString();                    }else{                        return null;                    }                }catch (Exception e){                    Log.e("post","code:"+e.getMessage());                    return null;                }            }            /**             * HttpURLConnection的get请求             * @param urlPath             * @return             */            public static String getUrlConnect(String urlPath){                try {                    //创建URL                    URL url = new URL(urlPath);                    //由URL的openConnection方法得到一个HttpURLConnection(需要强转)                    HttpURLConnection httpURLConnection =                            (HttpURLConnection) url.openConnection();                    //设置连接                    httpURLConnection.connect();                    //判断响应码  200 代表成功                    if(httpURLConnection.getResponseCode()==200){                        //由HttpURLConnection拿到输入流                        InputStream in=httpURLConnection.getInputStream();                        StringBuffer sb=new StringBuffer();                        //根据输入流做一些IO操作                        byte [] buff =new byte[1024];                        int len=-1;                        while((len=in.read(buff))!=-1){                            sb.append(new String(buff,0,len,"utf-8"));                        }                        in.close();                        httpURLConnection.disconnect();                        return  sb.toString();                    }else{                        return null;                    }                } catch (Exception e) {                    e.printStackTrace();                }                return null;            }}



0 0