1.HttpUtil 封装方法 和 定义接口回调
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)
{
// 回调onFinish方法
listener.onFinish(response.toString());
}
}
catch (Exception e) {
e.printStackTrace();
if(listener != null)
{
// 回调onError方法
listener.onError(e);
}
}
finally {
if (connection != null) {
connection.disconnect();
}
}
}
}).start();
}
// 定义一个接口
public interface HttpCallBackListener
{
// 当服务器响应时候返回
void onFinish(String response);
// 当出错时候返回
void onError(Exception e);
}
}
// 使用 HttpUtil 的setHttpRequest方法
HttpUtil.sendHttpRequest("http://www.baidu.com", new HttpUtil.HttpCallBackListener() {
@Override
public void onFinish(String response)
{
// 根据返回数据处理
}
@Override
public void onError(Exception e)
{
// 根据错误信息处理
}
});
2. okHttp 的回调
public class HttpUtil
{
public static void sendHttpRequest(String address, final okhttp3.Callback callback)
{
// 开子线程进行操作 子线程中无法通过return返回数据
new Thread(new Runnable()
{
@Override
public void run()
{
// 使用OkHttp方式
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://www.baidu.com")
.build();
client.newCall(request).enqueue(callback);
}
}).start();
}
}
// 使用 HttpUtil 的setHttpRequest方法
HttpUtil.sendHttpRequest("http://www.baidu.com", new Callback()
{
@Override
public void onFailure(Call call, IOException e)
{
}
@Override
public void onResponse(Call call, Response response) throws IOException
{
// 得到服务器返回的内容
String body = response.body().string();
}
});