目录
有回调业务的场景中经常用到。
下面主要介绍4种方式获取输入流,根据实际情况,选择其中一种使用即可。
1. 以缓冲方式从request请求中获取输入流
public String readByBuffer(HttpServletRequest request) {
String result = null;
try {
String lineStr = null;
StringBuilder data = new StringBuilder();
BufferedReader bufferedReader = request.getReader();
while ((lineStr = bufferedReader.readLine()) != null) {
data.append(lineStr);
}
result = data.toString();
bufferedReader.close();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
2. 以缓冲方式从指定URL中获取输入流
public String readByBuffer(String urlStr) {
String result = null;
try {
String lineStr = null;
StringBuilder data = new StringBuilder();
// 获取字节流
InputStream inputStream = new URL(urlStr).openStream();
// 将字节流转换成字符流,并指定字符集
InputStreamReader inputStreamReader = new InputStreamReader(inputStream,"UTF-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
while ((lineStr = bufferedReader.readLine()) != null) {
data.append(lineStr);
}
result = data.toString();
bufferedReader.close();
inputStreamReader.close();
inputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
3 以字节方式从request请求中获取输入流
public String readByByte(HttpServletRequest request) {
String result = null;
try {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
// 获取输入流
ServletInputStream inputStream = request.getInputStream();
// 读取输入流中的数据
int len = -1;
byte[] arr = new byte[1024];
while ((len = inputStream.read(arr)) != -1){
outputStream.write(arr,0,len);
}
result = new String(outputStream.toByteArray());
outputStream.close();
inputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
4. 以字节方式从指定URL中获取输入流
public String readByByte(String urlStr) {
String result = null;
try {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
// 获取字节流
InputStream inputStream = new URL(urlStr).openStream();
// 将字节流转换成字符流,并指定字符集
InputStreamReader inputStreamReader = new InputStreamReader(inputStream,"UTF-8");
// 读取输入流中的数据
int len = -1;
byte[] arr = new byte[1024];
while((len = inputStreamReader.read()) != -1){
outputStream.write(arr,0,len);
}
result = new String(outputStream.toByteArray());
outputStream.close();
inputStreamReader.close();
inputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}