GET请求
/**
* GET方式请求数据
*
* @param urlStr
*/
public static void getRequest(String urlStr) {
try {
URL url = new URL(urlStr);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setConnectTimeout(5000);
httpURLConnection.setReadTimeout(5000);
httpURLConnection.connect();
if (HttpURLConnection.HTTP_OK == httpURLConnection.getResponseCode()) {
//调用getInputStream后才开始正式发起请求
InputStream inputStream = httpURLConnection.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String line;
StringBuilder stringBuilder = new StringBuilder();
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line);
}
Logger.t(TAG).i(stringBuilder.toString());
//关闭流对像
bufferedReader.close();
inputStreamReader.close();
inputStream.close();
} else {
Logger.t(TAG).i("服务端出错");
}
} catch (Exception e) {
e.printStackTrace();
}
}
POST请求
* Post方式请求数据
*
* @param urlStr
* @param params
*/
public static void postRequest(String urlStr, @NonNull Map<String, String> params) {
try {
URL url = new URL(urlStr);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setConnectTimeout(5000);
httpURLConnection.setReadTimeout(5000);
//设置请求方式,默认为GET
httpURLConnection.setRequestMethod("POST");
//设置允许向httpURLConnection中写入数据,写入的数据都放在内存缓冲区中
//如果是GET请求,不能设置为true,否则会获取不到数据
httpURLConnection.setDoOutput(true);
//获取输出流向里面写入数据一定要在建立连接之前,否则会抛出异常
OutputStream outputStream = httpURLConnection.getOutputStream();
PrintWriter printWriter = new PrintWriter(outputStream);
String paramsString = getPostParams(params);
Logger.t(TAG).w("params:" + paramsString);
printWriter.write(paramsString);
printWriter.close();
outputStream.close();
httpURLConnection.connect();
if (HttpURLConnection.HTTP_OK == httpURLConnection.getResponseCode()) {
//开始发起请求
InputStream inputStream = httpURLConnection.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String line;
StringBuilder stringBuilder = new StringBuilder();
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line);
}
Logger.t(TAG).i("服务端返回数据:" + stringBuilder.toString());
//依次关闭流对象
bufferedReader.close();
inputStreamReader.close();
inputStream.close();
} else {
Logger.t(TAG).i("服务端出错");
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 将Map集合中的数据转换成post提交的格式
*
* @param params
* @return
*/
private static String getPostParams(Map<String, String> params) {
String paramsString = null;
if (params != null) {
Set<Map.Entry<String, String>> entrySet = params.entrySet();
Iterator<Map.Entry<String, String>> iterator = entrySet.iterator();
while (iterator.hasNext()) {
Map.Entry<String, String> next = iterator.next();
String key = next.getKey();
String value = next.getValue();
if (paramsString == null) {
paramsString = key + "=" + value;
} else {
paramsString = "&" + key + "=" + value;
}
}
}
return paramsString;
}