http的get方式连接服务器,获取数据

首先,定义一个回调接口,创造两个抽象方法,用于在发送http请求之后回调结果和抛出异常:

public interface HttpCallbackListener {
    void onFinish(String response); //http访问结束之后回调
    void onError(Exception e);//出现异常的时候回调
}


然后编写http请求的工具类,传入url和刚才定义的回调接口:

<span style="white-space:pre">		</span>public class HttpUtil {

    <span style="white-space:pre">		</span>public static void sendHttpRequest(final String address, final HttpCallbackListener listener) {
        new Thread(new Runnable() {    //新起一个线程进行耗时操作
            @Override
            public void run() {
                HttpURLConnection connection = null;
                try {
                    URL url = new URL(address);
                    connection = (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.setConnectTimeout(8000);
                    connection.setReadTimeout(8000);
                    InputStream in = connection.getInputStream();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
                    StringBuilder response = new StringBuilder();
                    String line;
                    while ((line = reader.readLine()) != null) {
                        response.append(line);
                    }
                    if (listener != null) {
                        listener.onFinish(response.toString());
                    }                        //当回调函数不为空时,结束之后回调finish方法。
                } catch (Exception e) {
                    if (listener != null) {
                        listener.onError(e);    //在发生异常时,若回调函数不为空,则回调onError方法
                    }
                } finally {
                    if (connection != null) {
                        connection.disconnect();
                    }
                }
            }
        }).start();  //启动线程
    }
}
当在具体调用上面的链接工具类时,因为HttpCallbackListener中有抽象的方法,必须进行重载,所以再实际调用的时候为抽象方法定义具体的内容:

HttpUtil.sendHttpRequest(address, new HttpCallbackListener() {
            @Override
            public void onFinish(String response) {
               //当finish的时候一定会回调到此方法,这里填入具体要执行的动作
            }

            @Override
            public void onError(Exception e) {
<span style="white-space:pre">					</span> //具体要执行的动作

});

 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值