02-03 23:52:37.853 ERROR [o.a.c.c.C.[.[localhost].[/].[dispatcherServlet]] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadException: java.io.EOFException: Unexpected EOF read on the socket] with root cause
java.io.EOFException: Unexpected EOF read on the socket
at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:788)
at org.apache.coyote.http11.Http11InputBuffer.access$300(Http11InputBuffer.java:42)
at org.apache.coyote.http11.Http11InputBuffer$SocketInputBuffer.doRead(Http11InputBuffer.java:1133)
at org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:102)
at org.apache.coyote.http11.Http11InputBuffer.doRead(Http11InputBuffer.java:249)
at org.apache.coyote.Request.doRead(Request.java:551)
at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:336)
at org.apache.catalina.connector.InputBuffer.checkByteBufferEof(InputBuffer.java:632)
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:362)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:132)
at java.io.FilterInputStream.read(FilterInputStream.java:133)
at org.apache.tomcat.util.http.fileupload.util.LimitedInputStream.read(LimitedInputStream.java:132)
at org.apache.tomcat.util.http.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:977)
at org.apache.tomcat.util.http.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:881)
at java.io.InputStream.read(InputStream.java:101)
at org.apache.tomcat.util.http.fileupload.util.Streams.copy(Streams.java:98)
at org.apache.tomcat.util.http.fileupload.util.Streams.copy(Streams.java:68)
at org.apache.tomcat.util.http.fileupload.MultipartStream.readBodyData(MultipartStream.java:572)
将请求拿出来,参数什么的一样,使用postMan提交正常,采用APP访问接口就失败。
后面怀疑是不是请求头不一样,请求头也一致后发现postMan提交也失败了。
不带请求头使用postMan提交发现, Content-Length:659 用Fiddler拦截看到的, 对比APP提交拦截的Content-Length不一致 , 在postMan中不指定Content-Length ,
会在提交的时候自己计算。 后面我手动设置 Content-Length:660 > 659, 发现请求就和APP请求一样报错了。
APP请求拦截的请求头Content-Length: 777
postMan请求不主动带Content-Length的话默认是在请求发生的时候计算出来的
手动指定Content-Length: 660 postMan请求一样报错了
总结: Content-Length 是表示请求的字节长度 , 服务的根据这个头去读取流,当读取到659的时候流已经到EOF结束了,但是APP设置的是777长度,服务端就认为请求流应该还没读取完,所以就报错了。
这个需要APP同事排查下为什么是 777 长度,这个长度不对
APP请求后端接口,莫名奇妙报错,前往后台查看日志还行报了下面的错误02-03 23:52:37.853 ERROR [o.a.c.c.C.[.[localhost].[/].[dispatcherServlet]] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.
SpringBoot项目在接收参数时,突然出现Unexpected EOF read on the socket异常报错,此时请求还没有进入服务端,初步看起来是客户端的问题。
进行Wireshark抓包查看HTTP请求报文,发现只有服务端响应报文,客户端请求报文丢失了。 请求方式是POST请求参数是String类型,不应该出现接收不到的情况,部署在其他环境上是好的。
于是我又换了另外一种请求方式,使用request接收,然后通过读取reader的方式获..
文件上传报错java.io.EOFException: Unexpected EOF read on the socket 问题解决
看字面意思,说是文件还没到末尾就被客户端中断,可是文件已经被上传到了服务器,并且信息也已经返回,为什么会这样?猜想是超出tomcat文件连接时间了,就被跳转
我用的是Spring Boot项目,可以直接在application配置文件里加上一个t...
Krzysztof Lis,Krishna Nakka,Pascal Fua,Mathieu Salzmann ICCV 2019
git clone https://github.com/cvlab-epfl/detecting-the-unexpected --recursive
pip install numpy opencv-python-headless matplotlib h5py natsort imageio torch torchvision scipy tqdm tensorboard future ipython
要运行笔记本文件:
pip install jupyterlab
训练有素的体重
下载并将其放置在detecting-the-unexpected/exp (或用env变量DIR_EXPERIMENTS指定的
最近负责的SpringBoot项目日志里面老是出现“Unexpected EOF read on the socket”的错误,但是测试时,测来测去又没发现什么问题,但是看到日志里面有错误日志又不知道原因,这个怎么能忍,所以花点时间好好看看。
首先得出我的结论:在客户端上传请求体的期间,客户端关闭了网络连接,导致服务器端的输入流异常中断,最终导致Jackson反序列化出现异常。下面是具体的分析过程。
首先我们看看错误日志:
11:00:13.792 [http-nio-9090-exec-1] E.
信息: 解析 HTTP 请求 header 错误注意:HTTP请求解析错误的进一步发生将记录在DEBUG级别。
java.lang.IllegalArgumentException: 在方法名称中发现无效的字符串, HTTP 方法名必须是有效的符号.
atorg.apache.coyote.http11.InternalAprInputBuffer.parseRequestLine(InternalAprInputBuffer.jav.
前后端分离实现导出excel,后端使用easyexcel将数据写入excel表格,然后将其写入到响应流中,关于easyexcel的快速使用可参考文章:JAVA使用easyexcel导出excel
后端主要代码如下:
public <T extends BaseRowModel> void exportExcel(HttpServletResponse response, List<...
EOFException根因分析
前端mock把requestBody给消费掉了,导致传到后端没有body,后端在解析的时候发现request
请求头的content-length是59,就一直等待接收数据,与此同时,前端也在等待后端返回结果。1分钟后,前端等待超时,前端发
EOF请求(具体为何会发
EOF还需要进一步学习),后端收到以后,发现和预期的消息不一致,就报了
EOF这个错误。
mock也会影响到request
请求体,所以去mock-server.js中去查看。
删除红框的内容
作者:青城山下宁采臣
最近捣鼓RN,做了个项目,但是到调试接口的时候出了一个小问题,因为以前用的都是ajax和axios,这回rn自己提供了一个fetch的api,所以就索性用提供的了,然后就掉进坑里了……他!报错了
Unexpected token in JSON at position 0 眼熟的错误,可能以前当你发送一个HTTP
请求的时候,都曾出现过这个错误提示或者相似的错误,那这个错误是由什么引起的呢
这些错误发生在你向服务器发送
请求的时候,返回值不是JSON而你却用JSON的方法解析的时候,可能会发生这种情况
fetch(’/api’).then(res => res.json())
jquery中ajax
请求后台数据成功后既不执行success也不执行error,此外系统报错:Uncaught SyntaxError:
Unexpected identifier at Object.success,但
后台能够返回数据,原代码如下:
var source=[];
$.ajax({
type: "post",
url: "connectdb/select.jsp",
data: {database: "scmdb", selectsql: sql},
async: false, method: 'post',
dataType: "json",
上传文件偶尔会报出java.io.
EOFException:
Unexpected EOF read on the
socket错误。
debug模式下不会出现该错误。
2、我的情况:不需要创建文件流,只需要将文件转换成二进制存储进入数据库。
3、解决方式:
3.1判断是否已经正确创建文件流。(我不需要。
早上起来发布个项目,现在测试没任何问题。索性直接打包线上代码测试,报了个java.io.EOFException: Unexpected EOF read on the socket
1、看里面一行错误都不是代码里面报的,都是apache报错就定位到是配置问题
2、查看了一下兆宽是最小的2M的学生机瞬间懂了就是超时问题
直接撸代码
在yml配置tomcat连接时间
server:
tomcat:
max-http-post-size: 100MB
connection-timeout
一个项目使用了druid作为数据源,每过几十分钟刷新页面就会出现java.net.SocketException: 断开的管道 (Write failed) 错误。
后来给连接池配置部分加上了
<property name="validationQuery" value="select 1"/>
<property name="testOnBorr...