自定义网络操作公共类 HttpUtil(接口回调机制)

来源:互联网 发布:ipv6无网络权限win10 编辑:程序博客网 时间:2024/05/16 10:40

因为每一个应用程序很可能会在许多地方都使用网络功能,而发送HTTP请求的代码基本都是相同的,通常情况下我们都应该将这些通用的网络操作提取到一个公关类里,并提供一个静态方法,当想要发起网络请求的时候就只需要简单的调用一下这个方法即可。

public class HttpUtil {    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) {                        //回调onFinish()方法                        listener.onFinish(response.toString());                    }                }catch (Exception e) {                    if (listener != null) {                        //回调onError()方法                        listener.onError(e);                    }                }finally {                    if (connection != null){                        connection.disconnect();                    }                }            }        }).start();    }}

因为如果我们在sendHttpRequest()方法中开启了一个线程来发起HTTP请求,那么服务器响应的数据是无法进行返回的,这时候就需要调用JAVA的回调机制。定义一个借口,onFinish用来处理响应的数据

public interface HttpCallbackListener {    void onFinish(String response);    void onError(Exception e);}

 

0 0
原创粉丝点击