android笔记20170116

时间:2025-02-09 13:34:32

封装http请求类,利用回调机制获取返回值

public interface HttpCallbackListener {

    void onFinish(String response);

    void onError(Exception e);
}
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);
connection.setDoInput(true);
connection.setDoOutput(true);
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());
}
} catch (Exception e) {
if(listener != null){
listener.onError(e);
}
} finally{
if(connection != null){
connection.disconnect();
}
}
} }).start();
}
}

使用方法:

HttpUtil.sendHttpRequest("address", new HttpCallbackListener() {

            @Override
public void onFinish(String response) { } @Override
public void onError(Exception e) { }
});

需要注意的是,最终的回调接口还是在子线程中运行的,因此我们不可以在这里执行任何的UI操作,除非借助runOnUiThread()方法来进行线程转换