实例详解Android快速开发工具类总结

2019-12-10 19:13:17丽君

十、Http相关辅助类 HttpUtils.java

/** 
* Http请求的工具类 
*/
public class HttpUtils 
{ 
private static final int TIMEOUT_IN_MILLIONS = ; 
public interface CallBack 
{ 
void onRequestComplete(String result); 
} 
/** 
* 异步的Get请求 
* 
* @param urlStr 
* @param callBack 
*/ 
public static void doGetAsyn(final String urlStr, final CallBack callBack) 
{ 
new Thread() 
{ 
public void run() 
{ 
try 
{ 
String result = doGet(urlStr); 
if (callBack != null) 
{ 
callBack.onRequestComplete(result); 
} 
} catch (Exception e) 
{ 
e.printStackTrace(); 
} 
}; 
}.start(); 
} 
/** 
* 异步的Post请求 
* @param urlStr 
* @param params 
* @param callBack 
* @throws Exception 
*/ 
public static void doPostAsyn(final String urlStr, final String params, 
final CallBack callBack) throws Exception 
{ 
new Thread() 
{ 
public void run() 
{ 
try 
{ 
String result = doPost(urlStr, params); 
if (callBack != null) 
{ 
callBack.onRequestComplete(result); 
} 
} catch (Exception e) 
{ 
e.printStackTrace(); 
} 
}; 
}.start(); 
} 
/** 
* Get请求,获得返回数据 
* 
* @param urlStr 
* @return 
* @throws Exception 
*/ 
public static String doGet(String urlStr) 
{ 
URL url = null; 
HttpURLConnection conn = null; 
InputStream is = null; 
ByteArrayOutputStream baos = null; 
try 
{ 
url = new URL(urlStr); 
conn = (HttpURLConnection) url.openConnection(); 
conn.setReadTimeout(TIMEOUT_IN_MILLIONS); 
conn.setConnectTimeout(TIMEOUT_IN_MILLIONS); 
conn.setRequestMethod("GET"); 
conn.setRequestProperty("accept", "*/*"); 
conn.setRequestProperty("connection", "Keep-Alive"); 
if (conn.getResponseCode() == ) 
{ 
is = conn.getInputStream(); 
baos = new ByteArrayOutputStream(); 
int len = -; 
byte[] buf = new byte[]; 
while ((len = is.read(buf)) != -) 
{ 
baos.write(buf, , len); 
} 
baos.flush(); 
return baos.toString(); 
} else 
{ 
throw new RuntimeException(" responseCode is not ... "); 
} 
} catch (Exception e) 
{ 
e.printStackTrace(); 
} finally 
{ 
try 
{ 
if (is != null) 
is.close(); 
} catch (IOException e) 
{ 
} 
try 
{ 
if (baos != null) 
baos.close(); 
} catch (IOException e) 
{ 
} 
conn.disconnect(); 
} 
return null ; 
} 
/** 
* 向指定 URL 发送POST方法的请求 
* 
* @param url 
* 发送请求的 URL 
* @param param 
* 请求参数,请求参数应该是 name=value&name=value 的形式。 
* @return 所代表远程资源的响应结果 
* @throws Exception 
*/ 
public static String doPost(String url, String param) 
{ 
PrintWriter out = null; 
BufferedReader in = null; 
String result = ""; 
try 
{ 
URL realUrl = new URL(url); 
// 打开和URL之间的连接 
HttpURLConnection conn = (HttpURLConnection) realUrl 
.openConnection(); 
// 设置通用的请求属性 
conn.setRequestProperty("accept", "*/*"); 
conn.setRequestProperty("connection", "Keep-Alive"); 
conn.setRequestMethod("POST"); 
conn.setRequestProperty("Content-Type", 
"application/x-www-form-urlencoded"); 
conn.setRequestProperty("charset", "utf-"); 
conn.setUseCaches(false); 
// 发送POST请求必须设置如下两行 
conn.setDoOutput(true); 
conn.setDoInput(true); 
conn.setReadTimeout(TIMEOUT_IN_MILLIONS); 
conn.setConnectTimeout(TIMEOUT_IN_MILLIONS); 
if (param != null && !param.trim().equals("")) 
{ 
// 获取URLConnection对象对应的输出流 
out = new PrintWriter(conn.getOutputStream()); 
// 发送请求参数 
out.print(param); 
// flush输出流的缓冲 
out.flush(); 
} 
// 定义BufferedReader输入流来读取URL的响应 
in = new BufferedReader( 
new InputStreamReader(conn.getInputStream())); 
String line; 
while ((line = in.readLine()) != null) 
{ 
result += line; 
} 
} catch (Exception e) 
{ 
e.printStackTrace(); 
} 
// 使用finally块来关闭输出流、输入流 
finally 
{ 
try 
{ 
if (out != null) 
{ 
out.close(); 
} 
if (in != null) 
{ 
in.close(); 
} 
} catch (IOException ex) 
{ 
ex.printStackTrace(); 
} 
} 
return result; 
} 
}