Java中获取输入流

目录

1. 以缓冲方式从request请求中获取输入流

2. 以缓冲方式从指定URL中获取输入流

3 以字节方式从request请求中获取输入流

4. 以字节方式从指定URL中获取输入流


有回调业务的场景中经常用到。

下面主要介绍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;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值