我正在尝试上传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);
答案 0 :(得分:0)
我怀疑您的代码基本上是正确的,但是服务器 URL 错误或服务器没有正确响应 - 就 HTTP 协议而言。
如果您的代码无法发送正确的 HTTP 请求,我希望服务器使用相应的 HTTP 4xx 响应代码进行响应。