gpt4 book ai didi

java - 使用 JavaWS 在表单数据中发布文件

转载 作者:行者123 更新时间:2023-12-01 09:53:03 28 4
gpt4 key购买 nike

在 postman 中,我将表单数据发布到基于 play2 框架构建的 API。现在我想在 play2 框架上构建的另一个 API 中进行相同的调用。

ws.url(url).setContentType("application/x-www-form-urlencoded")
.post("key1=value1&key2=value2");

可用于提交表单数据,但如何将文件添加到同一请求?

使用play框架2.4.X

最佳答案

play website ,你可以找到下面的代码来实现你想要的。注意该文档适用于2.5.X的play版本

import play.mvc.Http.MultipartFormData.*;

//the file you want to post
Source<ByteString, ?> file = FileIO.fromFile(new File("hello.txt"));

//generate the right format for posting
FilePart<Source<ByteString, ?>> fp = new FilePart<>("hello", "hello.txt", "text/plain", file);

DataPart dp = new DataPart("key", "value");// the data you want to post

ws.url(url).post(Source.from(Arrays.asList(fp, dp)));

更新:您应该知道的第一件事是 ws 是基于 com.ning.http.AsyncHttpClient 构建的。引用Play Document ,play 2.4.*ws不支持直接多部分表单上传。您可以将底层客户端 AsyncHttpClientRequestBuilder.addBodyPart 一起使用。 。下面的代码可以实现你想要的

import com.ning.http.client.AsyncHttpClient
import com.ning.http.client.multipart.FilePart

AsyncHttpClient myClient = ws.getUnderlying();
FilePart myFilePart = new FilePart("myFile", new java.io.File("test.txt"))
myClient.preparePut("http://localhost:9000/index").addBodyPart(filePart).execute.get()

祝你好运

关于java - 使用 JavaWS 在表单数据中发布文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37482084/

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