我最近在我的服務器上安裝了一個ssl證書,並在客戶端程序中切換了url以使用url的https版本。現在,由於某種原因,在向服務器發送文件時,多部分請求中發送的參數不在請求中。但有時他們正在請求,但是多部分請求中的文件似乎已損壞,並且在讀取文件時出現EOFException。這真的很奇怪。我使用Apache的HttpClient庫將文件發送到服務器。有誰知道這可能是什麼?下面是試圖反序列化的文件時,我發現了服務器上的錯誤:如何使用Apache HttpClient Library通過https發送文件?
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.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter。的java:578) 在org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 在org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) 在org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) at org.springframework.web.servlet.FrameworkServlet.processRequest(Framewo rkServlet.java:882) at javax.servlet。javax.servlet.http.HttpServlet.service(HttpServlet.java:707) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) 。 http.HttpServlet.service(HttpServlet.java:790) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java: 318) 在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) 在org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
只是對答案的更新。即使在更改代碼以立即從請求中獲取所有文件之後,我仍然遇到同樣的問題。所以我環顧四周,找到了一個使用httpclient庫發送多部分請求的例子。我編寫的代碼沒有使用最新的組件,因此我在代碼中將httpclient組件切換爲代碼中來自此apache示例的最新httpclient組件:https:// hc。 apache.org/httpcomponents-client-ga/httpmime/examples/org/apache/http/examples/entity/mime/ClientMultipartFormPost.java – user2488184 2014-09-25 05:14:04
修復了它! – user2488184 2014-09-25 05:17:51