gpt4 book ai didi

java - Jersey MultiPartRequest 接收 null

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

我正在尝试使用 MultipartEntitybuilder 从客户端构建多部分请求:

MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.addTextBody(MULTIPART_ID,
id,ContentType.TEXT_PLAIN);
builder.addTextBody(DOCT, doc,ContentType.TEXT_PLAIN);
final InputStreamBody fileBody = new InputStreamBody(cachedStream,
ContentType.create(MediaType.APPLICATION_OCTET_STREAM));
builder.addPart(CONTENT_PART, fileBody);
builder.addTextBody(OVERWRIT_PERMIT, String.valueOf(preventOverWrite),ContentType.TEXT_PLAIN);


final HttpPut putMethod= new HttpPut(url);
// putMethod.setHeader("content-type", "multipart/form-data"
putMethod.setEntity(builder.build());
final CloseableHttpResponse response = httpClient.execute(storeMethod);

阅读本文的资源类如下:

@Path("/somePath")
@PUT
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response uploadFunction(@FormDataParam(value="id") String id, @FormDataParam(value="doc") String doc,@FormDataParam(value="content") InputStream content,
@FormDataParam(value="overwrite") Boolean flag) throws SomeException {

我正在将 Spring Boot 与 Jersey2 一起使用。在此步骤中,当我尝试读取其中任何一个时,我将获得所有这些参数的空值。因此响应会出​​现内部服务器错误。

我还添加了:

register(MultiPartFeature.class);

客户端和服务器应用程序。

另外还添加了依赖

<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<scope>compile</scope>
</dependency>

有人可以指出我缺少什么吗?我需要创建一个对象而不是为服务器使用 @FormDataParam 吗?我已经对正确使用多部分进行了很多搜索,但我还无法修复它。

最佳答案

我在使用解码器后修复了这个问题。还需要一个代表对象的DTO。所以上面的资源类更新为

@Path("/somePath")
@PUT
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response uploadFunction(FormDataMultiPart input){
Map<String, List<FormDataBodyPart>> bodyParts = input.getFields();
bodyParts.get("id").stream().findFirst().ifPresent(id-> dtoObject.setId(id.getValue()));
}

类似地,对于其他字段,您也可以检索值。

关于java - Jersey MultiPartRequest 接收 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62388368/

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