gpt4 book ai didi

java - 在 javax 请求中 POST 两个输入流

转载 作者:太空宇宙 更新时间:2023-11-04 10:05:19 24 4
gpt4 key购买 nike

我正在尝试向采用包含两个文件的表单的端点发送请求。我当前正在尝试的方法在最后一行失败:

WebTarget client = myUtils.createClient(URL, ENDPOINT);

MultivaluedMap<String, InputStream> formData = new MultivaluedHashMap<>();
formData.add(FILE_1, stream1);
formData.add(FILE_2, stream2);

Entity<MultivaluedMap<String, InputStream>> entity = Entity.entity(formData, MediaType.MULTIPART_FORM_DATA_TYPE);

Response response = client.request().post(entity);

达到的错误是

javax.ws.rs.ProcessingException: RESTEASY003215: could not find writer for content-type multipart/form-data type: javax.ws.rs.core.MultivaluedHashMap

MediaType 更改为 APPLICATION_FORM_URLENCODED_TYPE 会产生

java.lang.ClassCastException: java.io.SequenceInputStream cannot be cast to java.lang.String

是否有更好的方法来处理使用两个文件发布表单?

最佳答案

有多种方法。如果您使用 Jersey,一种方法是执行以下操作:

import org.glassfish.jersey.media.multipart.FormDataMultiPart;
import org.glassfish.jersey.media.multipart.file.FileDataBodyPart;
....
....
FileDataBodyPart fileDataBodyPart =
new FileDataBodyPart("file", new File("/filelocation/file.txt"));
FormDataMultiPart formDataMultiPart = (FormDataMultiPart)
FormDataMultiPart.field("somekey","somevalue")
.bodyPart( fileDataBodyPart);

WebTarget target = client.target(restServiceURLYouwant);
Response response = target.request().post(Entity.entity(formDataMultiPart,
formDataMultiPart.getMediaType()));

formDataMultiPart.close();

另一种方法是使用 Apache HttpUtils

 import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.FileBody;
....
....
MultipartEntity multipartEntity = new MultipartEntity();
FileBody fb = new FileBody(file, "application/octet-stream");
multipartEntity.addPart(fb);

HttpClient httpClient = new DefaultHttpClient() ;
HttpPost httpPostRequest = new HttpPost (url) ;
//url above should be url of the Rest service endpoint
httpPostRequest.setEntity(multiPartEntity) ;
              
 HttpResponse response = httpClient.execute(httpPostRequest) ;

关于java - 在 javax 请求中 POST 两个输入流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53013570/

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