gpt4 book ai didi

spring - 无法读取HTTP消息: org. springframework.http.converter.HttpMessageNotReadableException:缺少必需的请求正文

转载 作者:行者123 更新时间:2023-12-02 08:49:26 24 4
gpt4 key购买 nike

我有拦截器,由于某些原因,我必须读取 HttpServletRequest 中包含的发布日期,如下所示:

    InputStream inputStream = request.getInputStream();
if (inputStream != null) {
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
char[] charBuffer = new char[128];
int bytesRead = -1;
while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
stringBuilder.append(charBuffer, 0, bytesRead);
}
} else {
stringBuilder.append("");
}

执行此操作后,我收到 400 个 ajax 错误请求无法读取 HTTP 消息:org.springframework.http.converter.HttpMessageNotReadableException:缺少必需的请求正文

最佳答案

Spring 提供了一个名为 ContentCachingRequestWrapper 的类,它扩展了 HttpServletRequestWrapper。该类缓存所有读取的内容getInputStream() 和 getReader()并允许通过 getContentAsByteArray() 检索此内容。因此我们可以为此目的多次检索InputStream。此功能由 ContentCachingRequestWrapper 中的blow方法提供:

@Override
public ServletInputStream getInputStream() throws IOException {
if (this.inputStream == null) {
this.inputStream = new ContentCachingInputStream(getRequest().getInputStream());
}
return this.inputStream;
}

此类通过以下方法修复 UTF-8 的字符编码问题:

@Override
public String getCharacterEncoding() {
String enc = super.getCharacterEncoding();
return (enc != null ? enc : WebUtils.DEFAULT_CHARACTER_ENCODING);
}

Here完整详细信息请参见 ContentCachingRequestWrapper

关于spring - 无法读取HTTP消息: org. springframework.http.converter.HttpMessageNotReadableException:缺少必需的请求正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35549040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com