作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 JAX RS 方法,它接受上传的文件,如下
@POST
@Path("/entity/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(@FormDataParam("file") InputStream uploadedInputStream, @FormDataParam("file") FormDataContentDisposition fileDetail) {
// Upload this file to another remote API again on secret server
}
有人可以建议我如何使用 InputStream 将此文件转发到具有类似消费者的另一台服务器吗?
我尝试过这个,但没有成功。缺少一些东西
// Using com.ning.http.client.AsyncHttpClient
final FluentCaseInsensitiveStringsMap map = new FluentCaseInsensitiveStringsMap();
map.add("file", fileDetail.getFileName());
map.add("Content-Type","multipart/form-data; boundary=" + boundary);
AsyncHttpClient.BoundRequestBuilder requestBuilder = asyncHttpClient.preparePost(postURL);
Response response = requestBuilder.setBody(IOUtils.toByteArray(uploadedInputStream)).setHeaders(map).execute().get();
最佳答案
我猜你正在使用 Jersey。在这种情况下,只需使用 Jersey 客户端 API。您已经具有多部分支持依赖项。您只需要使用正确的 API 即可。例如
FormDataMultiPart multiPart = new FormDataMultiPart()
.field("file", uploadedInputStream, MediaType.MULTIPART_FORM_DATA);
Client client = ClientBuilder.newClient();
String url = "...";
Response response = client.target(url).request()
.post(Entity.entity(multiPart, MediaType.MULTIPART_FORM_DATA_TYPE));
String responseAsString = response.readEntity(String.class);
查看更多信息
不确定您使用的是哪个 Jersey 版本,但上面是 Jersey 2.x 客户端 API。如果您使用 Jersey 1.x,API 会略有不同。请参阅here例如
关于java - 如何在 Java 中对 InputStream 进行 HTTP POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29705911/
我是一名优秀的程序员,十分优秀!