0

我最近在我的服务器上安装了一个 ssl 证书,并将客户端程序中的 url 切换为使用 url 的 https 版本。现在,由于某种原因,当向服务器发送文件时,多部分请求中发送的参数不在请求中。但有时他们在请求中,但多部分请求中的文件似乎已损坏,并且在读取文件时出现 EOFException。这真的很奇怪。我正在使用 Apache 的 HttpClient 库将文件发送到服务器。有谁知道这可能是什么?以下是我在尝试反序列化文件时在服务器上遇到的错误:

  java.io.EOFException
    at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2325)
    at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2794)
    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:801)
    at java.io.ObjectInputStream.<init>(ObjectInputStream.java:299)
    at com.jgy.genserver.service.CreateDomainsAndDaosImpl.deserializeObject(CreateDomainsAndDaosImpl.java:741)
    at com.jgy.genserver.service.CreateDomainsAndDaosImpl.createDomainsAndDaos(CreateDomainsAndDaosImpl.java:70)
    at com.jgy.genserver.controller.CreationController.uploadFile(CreationController.java:199)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:61

7) 在 org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 的 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)在 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) 在 org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 在 org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:882) 在 org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:707) 在 javax.servlet.http。 org.apache.catalina.core 上的 HttpServlet.service(HttpServlet.java:790)。StandardWrapper.service(StandardWrapper.java:1682) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) at org .apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)

4

1 回答 1

0

好的,我想通了,想发布答案,以防其他人遇到这个问题。问题在于,在读取所有文件之前,流已过早关闭。这是因为我一次抓取一个文件并在抓取下一个文件之前对文件进行处理。显然,https 连接不够稳定,无法做到这一点。我猜由于它是一种安全传输,因此流不会维持很长时间。

于 2014-09-22T20:11:39.467 回答