服务器无法使用有效的HTTP响应进行响应

时间:2019-05-17 09:27:14

标签: java spring-boot http file-upload

我正在尝试上传xml文件。使用MultipartEntityBuilder将二进制格式的文件添加到HttpEntity时,出现以下错误

org.apache.http.ProtocolException: The server failed to respond with a valid HTTP response
    at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:149) ~[httpclient-4.5.3.jar:4.5.3]
    at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56) ~[httpclient-4.5.3.jar:4.5.3]
    at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259) ~[httpcore-4.4.6.jar:4.4.6]

我已经通过链接

https://www.baeldung.com/httpclient-multipart-upload

我的理解是该文件未被接受,因为http实体无法发送MultipartEntityBuilder,但我可能是错的。


   HttpPost postRequest = new HttpPost("link to server");
   postRequest.setHeader("name1", "value");
   postRequest.setHeader("name2", "value2");
   File file1 = new File(file.getOriginalFilename());
   file1.createNewFile();
   FileOutputStream fileOutputStream = new FileOutputStream(file1);
   fileOutputStream.write(file.getBytes());
   fileOutputStream.close();
   MultipartEntityBuilder multipartEntityBuilder = 
   MultipartEntityBuilder.create();
   multipartEntityBuilder.addBinaryBody("file", file1);
   HttpEntity httpEntity = multipartEntityBuilder.create().addPart("file", new FileBody(file1)).build();
   postRequest.setEntity(httpEntity);

1 个答案:

答案 0 :(得分:0)

我怀疑您的代码基本上是正确的,但是服务器 URL 错误或服务器没有正确响应 - 就 HTTP 协议而言。

如果您的代码无法发送正确的 HTTP 请求,我希望服务器使用相应的 HTTP 4xx 响应代码进行响应。