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();
}
}
/**
* 用作耗时操作回调接口
*
* @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();
}
}
相关文章推荐
- ReactiveCocoa代码实践之-RAC网络请求重构
- Android最基本的异步网络请求框架
- Android网络请求库android-async-http介绍
- Volley学习笔记(一)
- Volley学习笔记(二)
- 关于网络请求的开源框架总结 (转)
- 使用UIWebView与html实现网络请求
- Android HttpClient基本使用方法
- 记录网络请求清楚缓存方法
- 封装网络请求
- ASIHTTPRequest第三方网络请求详解
- 无限互联学习连载五 网络请求
- 网络链接简单形式
- ASIHttpRequest简单介绍
- 设计新的Android HTTP请求封装类
- IOS判断是否显示网络请求活动标志
- 关于iOS 数据请求ASIHttpRequest方法的总结
- [课堂实践与项目]IOS网络下载之 Post请求和Get请求
- afnetworking设置请求头代码
- iOS Framework: Introducing MKNetworkKit