java - 如何在 Java 中对 InputStream 进行 HTTP POST

标签 java jersey jax-rs multipartform-data

我有一个 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/

相关文章:

java - Sencha touch 使用 Jersey 创建更新删除

Java:带有注释的 Jersey (JAX-RS) 和 JAXB_FORMATTED_OUTPUT?

java - 从 Gmail 导入好友并向他们发送消息

java - 播放多个视频JavaFx

java - Tomcat 8.5 中的 Spring Boot Jersey 应用程序错误 AbstractMethodError : javax. ws.rs.core.UriBuilder.uri

java - RESTFul WebService - 如何将类变量表示为不同的 json 名称

java - 如何对调用 Jersey 客户端 API 的代码进行单元测试?

java - SimpleDateFormat 解析返回 null

java - 将 Big Integer 值转换为八位字节(2s 补充大端)序列,在 Java 中是 8 的倍数

java - 启动时加载和 Jersey