2011-12-21 2 views
0

HTTP/1.1 500 내부 서버 오류가 발생합니다. http 패킷에 소켓이 있지만 http 패킷에 데이터가 포함되어 있으며 여기에 파일이 포함되어 있습니다.파일 업로드가 C++을 통해 HTTP POST를 사용하여 실패 함

POST /my/service HTTP/1.0 
Host: myhostname.com 
Accept: */* 
Content-Type: multipart/form-data; boundary=----acbn1234 
Content-Length: 62 

------acbn1234 
Content-Disposition: form-data; name="segment" 

name 
------acbn1234 
Content-Disposition: form-data; name="segid" 

abc123 
------acbn1234 
Content-Disposition: form-data; name="segname" 

segment1 
------acbn1234 
Content-Disposition: form-data; name="txtfile"; filename="textfile.txt" 
Content-Type: text/plain 

segment information this the data in the file 
------acbn1234-- 

서버 측 아파치 톰캣 서버 콘솔에서 예외

난 서버가 난 (404), 즉 잘못된 요청 생각을 보여줍니다하지 않는 내 HTTP 패킷 괜찮 잘못입니다
SEVERE: Servlet.service() for servlet ssp-dispatcher threw exception 
org.apache.commons.fileupload.MultipartStream$MalformedStreamException: Stream ended unexpectedly 
    at org.apache.commons.fileupload.MultipartStream.readHeaders(MultipartStream.java:538) 
    at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.findNextItem(FileUploadBase.java:999) 
    at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.hasNext(FileUploadBase.java:1063) 
    at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:357) 
    at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126) 
    at org.springframework.web.multipart.commons.CommonsMultipartResolver.parseRequest(CommonsMultipartResolver.java:155) 
    at org.springframework.web.multipart.commons.CommonsMultipartResolver.resolveMultipart(CommonsMultipartResolver.java:138) 
    at org.springframework.web.servlet.DispatcherServlet.checkMultipart(DispatcherServlet.java:887) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:750) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669) 
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:585) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291) 
    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:877) 
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:594) 
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1675) 
    at java.lang.Thread.run(Unknown Source) 

가 내부 서버 오류 (500)를 보여줍니다 표시입니다 . ??

답변

0

내용 길이 헤더가 잘못되었습니다. 귀하의 데이터는 약 62 바이트가 아니라 62 바이트입니다.

+0

안녕하세요 sjoerd가 유일한 실수입니까 ??? 서버 스트림에 표시된 스택 추적은 예기치 않게 종료 되었습니까? – smita

+0

HTTP 판독기는 스트림에서 62 바이트 만 읽습니다. 그런 다음 멀티 파트 리더는 너무 짧다고 불평합니다. 예상보다 빨리 끝났습니다. – Sjoerd

관련 문제