Springcloud默认的返回内容格式为HTML,但我们微服务系统之间的调用格式通常为json格式,对于post请求,有时后响应的报文为JSON的时候就报错,接口测试的时候通常返回如下错误:<Not JSON content>
但通过查看html报文时 确实有响应内容,只是内容不全,json体只显示了一部分,存在丢失问题。解决此问题的方式就是修改原始响应内容的参数设置。重新设置headers Content-Type如下:
ServerHttpResponse originalResponse = exchange.getResponse();
HttpHeaders httpHeaders = originalResponse.getHeaders();
httpHeaders.add("Content-Type", "application/json; charset=UTF-8");
对于返回的内容显示不全的报错问题可以解决。
但同时另一个问题出现了,当测试加长的响应报文的时候,对于json报文还是显示错误,也就是默认的响应报文有长度限制,超过默认长度的报文后半部分会丢失,也就是原本的json串无法完整的显示,可以通过查看html来确认。 所以还需要修改原始的响应报文长度。如下:
originalResponse.getHeaders().setContentLength(uppedContent.length);
然后再通过 bufferFactory.wrap()方法返回内容。
另外post请求时,业务需要我们修改请求参数或者请求体参数,那就需要我们重新设置content-length的值,否则下层微服务获