一次Content-Length造成的心理崩溃

在一次网关进行添加支持rest ful风格重写(词穷,先暂时这么说着)时,我的读取报文代码报出了read timed out异常

这是获取报文的代码

public static String getReqInputStream(HttpServletRequest request) throws Exception {
        InputStream inputStream = request.getInputStream();

        StringBuilder bfRequest = new StringBuilder();
        byte[] byteBuff = new byte[2048];
        int count = 0;
        while ((count = inputStream.read(byteBuff)) != -1)
        {
            bfRequest.append(new String(byteBuff, 0, count, "ISO8859_1"));
        }

        inputStream.close();
        String rs = bfRequest.toString();
        rs = new String(rs.getBytes("ISO8859_1"), "UTF-8");
        rs = URLDecoder.decode(rs.toString(), "UTF-8");
        LogUtil.debug("请求xml:" + rs);
        return rs;
    }

我的第一个反应是是不是getInputStream()和什么方法冲突,百度了说是之前用过getParameter()之后getInputStream()就不会得到值,但我前面并没有用getParameter()获取过参数,只用过set/getAttribute(),那肯定不可能冲突了,那是发生了什么呢?(这个问题上我消耗了一个下午,这时我离当场爆炸只差一丢丢,幸好网易云音乐和知乎给了我力量,给了不工作的力量)

当我将原先成功的数据里面增加数据时,获取报文代码没有问题了,但是获取的报文会相应的根据你添加的代码相应的漏读最后几位代码(期间各种debug代码才发现的),what???缓存???这还能有缓存???从来没有见过啊。忘了说了,我是在火狐F12-网络里右键编辑重发里修改参数请求网关的。我就百无聊赖的对着网络页面发呆,突然发现了一个好熟悉的东西xxxxx-length,这个不是长度吗,在这里插入图片描述
我好像看到了一扇大门,在我将它删除重新发送的时候,网关接收数据成功了。随后点进去看了一下
在这里插入图片描述
Content-Length是用来标记发送的消息主题的大小

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值