设置响应头Content-Length后前端JSON parse error

  今天需要写一个第三方请求的过滤器,即前端请求后台,后台使用restTemplate请求三方接口,然后封装响应头和响应体返回给前端。

  可是,当写完代码,在前端请求后一看

   响应信息显示不全,这直接让我想到了在后端封装中设置了Content-Length这个响应头,于是看代码

   貌似一点问题都没有啊!再看前端接收到的响应头

   24个字符?看看实际响应结果是多少字符呢?

   嗯?按理说向后台要24个字符,肯定能把16个字符都取出来啊。再看后台,打断点调试

   发现结果字符串是一个长度为48的数组,这时猛然想起上学时C++老师说过读写文件可以使用字符流或字节流,没错,那Content-Length一定要设置字节数组的长度了(推测HTTP传输是按字节流),而java的String.length()默认是返回字符数组的字符数,怎么才能获取其字节流长度呢?

 完美解决

不过有一点,为什么getBytes()得到的是32,而debug界面显示的是48,猜测debug显示的不是字符串的字节流数组,而是字符串这个类的一些基本信息。

原文地址:https://www.cnblogs.com/guanghe/p/14299090.html