Jersey客户端:Content-Type头部值过多

3
在我的Web应用程序中,我会像这样调用一个服务:

Response response = null;
Builder builder = webTarget.request().accept(MediaType.APPLICATION_JSON_TYPE);

if (this.headers != null) { 
    builder.headers(this.headers); // headers is empty in this case
}

response = builder.method(methodName.toString(), Entity.entity(multiPart, multiPart.getMediaType()), Response.class);

if (typeOfT.equals(Response.class)) {
    return (T) response;

} else {
    handleException(response);
    return gson.fromJson(response.readEntity(String.class), typeOfT);
}

该服务的响应正确,但当我尝试反序列化响应时,会抛出以下异常:

org.glassfish.jersey.message.internal.HeaderValueException: 太多 "Content-Type" header values: "[application/json; charset=utf-8, application/json]"

我使用:

<dependency>
   <groupId>org.glassfish.jersey.core</groupId>
   <artifactId>jersey-client</artifactId>
   <version>2.25.1</version>
</dependency>
1个回答

2

当响应头中有多个Content-Type时,您将会收到此错误。您可以通过使用response.getHeaders().putSingle()来重置头部以仅使用一个。这将覆盖双重头部并使您只保留一个。

response.getHeaders().putSingle(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
return gson.fromJson(response.readEntity(String.class), typeOfT);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接