gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:28:00 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com