HttpURLConnection网络操作框架

来源:互联网 发布:mac的加速播放器 编辑:程序博客网 时间:2024/06/06 09:07

不知近水花先发,疑是经冬雪未销。—-张谓《早梅》


HttpUtil.java

package com.peng.json_net;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;/** * Created by Peng on 2016/8/21. */public class HttpUtil {    public static  void sendHttpRequest(final String address,final HttpCallbackListener listener){        new Thread(new Runnable() {            @Override            public void run() {                HttpURLConnection conn = null;                try {                    URL url =new URL(address);                    conn = (HttpURLConnection) url.openConnection();                    conn.setRequestMethod("GET");                    conn.setDoInput(true);                    //conn.setDoOutput(true);                    conn.setConnectTimeout(5000);                   // if (conn.getResponseCode() == 200) {                        InputStream in =conn.getInputStream();                        InputStreamReader isr = new InputStreamReader(in);                        BufferedReader br = new BufferedReader(isr);                        String line;                        //StringBuilder 缓存区 StringBuffer                        StringBuilder builder = new StringBuilder();                        while ((line = br.readLine()) != null) {                            builder.append(line);                        }                        if(listener !=null){                            // 回调onFinish()方法                            listener.onFinish(builder.toString());                        }                        /*br.close();                        isr.close();*/                   // }                }catch (Exception e){                    if (listener != null) {                        // 回调onError()方法                        listener.onError(e);                    }                }finally {                    if (conn != null) {                        conn.disconnect();                    }                }            }        }).start();    }}

HttpCallbackListener.java

package com.peng.json_net;/** * Created by Peng on 2016/8/21. */public interface HttpCallbackListener {    /**     * 服务器成功响应我们请求的时候调用     * @param builder     */    void onFinish(String builder);    /**     * 进行网络操作出现错误的时候调用     * @param e     */    void onError(Exception e);}

MainActivity.java

...... public void click(View view) {        final String path ="http://192.168.1.104:8080/get_data3.json";        HttpUtil.sendHttpRequest(path, new HttpCallbackListener() {        /**         *重写了onFinish()和onError()方法         */            @Override            public void onFinish(String builder) {                try {                    System.out.println(path);                    JSONObject root = new JSONObject(builder.toString());                    System.out.println("name= " + root.getString("name") +                            " age= " + root.getInt("age") +                            " address= " + root.getString("address"));                    JSONArray array = root.getJSONArray("languages");                    for (int i = 0; i < array.length(); i++) {                        JSONObject lan = array.getJSONObject(i);                        System.out.println("-----------------");                        System.out.println("id= " + lan.getInt("id"));                        System.out.println("name= " + lan.getString("name"));                        System.out.println("ide= " + lan.getString("ide"));                    }                } catch (JSONException e) {                    e.printStackTrace();                }            }            @Override            public void onError(Exception e) {                System.out.println("网络异常");            }        });    }    .....
0 0