您的位置:首页 > 理论基础 > 计算机网络

Android网络请求,Get方式请求,HttpURLConnection请求工具类

2016-05-29 13:40 597 查看
package utils;

/**
 * 用作耗时操作回调接口
 * 
 * @author Administrator
 * 
 */
public interface HttpCallbackListener {
    /**
     * 数据响应成功
     * 
     * @param response
     *            返回数据
     */
    void onFinish(String response);

    /**
     * 数据请求失败
     * 
     * @param e
     *            返回错误信息
     */
    void onError(Exception e);
}

package utils;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * 请求数据工具类
 * 
 * @author bob
 * 
 */
public class HttpRequestUtil {
    /**
     * 发送Get请求
     * 
     * @param address
     *            请求数据地址
     * @param listener
     *            耗时回调监听
     */
    public static void sendGetHttpRequest(final String address,
            final HttpCallbackListener listener) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                HttpURLConnection connection = null;
                try {
                    // 创建一个URL对象并传入地址
                    URL url = new URL(address);
                    // 用地址打开连接通道
                    connection = (HttpURLConnection) url.openConnection();
                    // 设置请求方式为get
                    connection.setRequestMethod("GET");
                    // 设置连接超时为8秒
                    connection.setConnectTimeout(8000);
                    // 设置读取超时为8秒
                    connection.setReadTimeout(8000);
                    // 设置可取
                    connection.setDoInput(true);
                    // 设置可读
                    connection.setDoOutput(true);
                    // 得到输入流
                    InputStream in = connection.getInputStream();
                    // 创建高效流对象
                    BufferedReader reader = new BufferedReader(
                            new InputStreamReader(in));
                    // 创建StringBuilder对象存储数据
                    StringBuilder response = new StringBuilder();
                    String line;// 一次读取一行
                    while ((line = reader.readLine()) != null) {
                        response.append(line);// 得到的数据存入StringBuilder
                    }
                    if (listener != null) {// 如果监听被回调
                        // 回调onFinish()方法
                        listener.onFinish(response.toString());
                    }
                } catch (Exception e) {
                    if (listener != null) {
                        // 回调onError()方法
                        listener.onError(e);
                    }
                } finally {
                    if (connection != null) {// 通道不为null
                        connection.disconnect();// 关闭通道
                    }
                }
            }
        }).start();
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  网络请求