80,471
社区成员




private WebUtil() {
}
private static WebUtil bean = new WebUtil();
private String requestUrl = "";
private int requestTime = 0;
private String method = Constant.REQUEST_GET;
private String encoding = HTTP.UTF_8;
/**
* 构造方法
*
* @param requestUrl
* 请求的地址
* @param requestTime
* 请求时长
* @param method
* 请求方式
* @param encoding
* 编码格式
*/
public WebUtil(String requestUrl, int requestTime, String method, String encoding) {
this.requestUrl = requestUrl;
this.requestTime = requestTime;
this.method = method;
this.encoding = encoding;
}
/**
* 单例模式获得bean
*
* @return WebUtil
*/
public static WebUtil get() {
return bean;
}
/**
* 根据url获得页面源码, 调用web接口
*
* @param params
* 参数列表 post必备, 比如:"name=张三&age=18"
* @param sessionInfo
* 可以保持session, 默认不保持
* @param isLine
* 得到的源码是否换行, 默认false
* @return String
*/
public String request(String params, String sessionInfo, boolean isLine) throws Exception {
Log.e(Constant.TAG_NAME, "调用web接口:" + requestUrl);
encoding = (ToolUtil.get().isBlank(encoding) ? HTTP.UTF_8 : encoding);
method = (ToolUtil.get().isBlank(method) ? Constant.REQUEST_GET : method.toUpperCase());
String mathStr = "mathRandom=" + Math.random();
if (method.equals(Constant.REQUEST_GET)) {
requestUrl += (requestUrl.indexOf("?") != -1 ? "&" : "?") + mathStr;
if (!ToolUtil.get().isBlank(params)) {
requestUrl += "&" + params;
}
}
HttpURLConnection conn = (HttpURLConnection) new URL(requestUrl).openConnection();
if (!ToolUtil.get().isBlank(sessionInfo)) {
conn.setRequestProperty("Cookie", sessionInfo);
}
conn.setRequestMethod(method);
if (requestTime > 0) {
conn.setConnectTimeout(isWifi() ? requestTime : requestTime * 3);
conn.setReadTimeout(isWifi() ? requestTime : requestTime * 3);
}
if (method.equals(Constant.REQUEST_POST)) {
conn.setDoOutput(true);
OutputStream output = conn.getOutputStream();
output.write((ToolUtil.get().isBlank(params) ? mathStr : params + "&" + mathStr).getBytes(encoding));
output.flush();
output.close();
}
String response = FileUtil.get().readFile(conn.getInputStream(), encoding, 1, isLine);
conn.disconnect();
return response;
}