【问题标题】:file upload fail using HTTP POST through C++通过 C++ 使用 HTTP POST 上传文件失败
【发布时间】:2011-12-21 15:54:33
【问题描述】:

我收到 HTTP/1.1 500 Internal Server Error 我想要做的是我正在发送一个 http 数据包,尽管套接字 http 数据包包含数据并且这里的文件是我的数据包

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--  

服务器端是 apache tomcat 服务器在控制台显示异常

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)  

我错了,我的 HTTP 数据包没问题,服务器没有显示错误请求,即 404,我认为它显示内部服务器错误 500。??

【问题讨论】:

    标签: java c++ web-services httpwebrequest http-headers


    【解决方案1】:

    您的内容长度标头不正确。您的数据大约是 400 字节,而不是 62 字节。

    【讨论】:

    • 嗨,sjoerd,这是唯一的错误吗???服务器流显示的堆栈跟踪意外结束怎么办?
    • HTTP 阅读器仅从流中读取 62 个字节。然后多部分阅读器抱怨它太短:它在预期之前结束了。
    猜你喜欢
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 2010-11-11
    • 2021-07-16
    相关资源
    最近更新 更多