【问题标题】:org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=multipart/form-dataorg.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException:找不到媒体类型的 MessageBodyWriter = multipart/form-data
【发布时间】:2021-05-18 22:28:11
【问题描述】:

我正在 Jersey 框架中编写客户端代码,我需要在其中发送一个包含配置详细信息的 YAML 文件。我一直有异常

MessageBodyProviderNotFoundException:找不到媒体类型=multipart/form-data 的 MessageBodyWriter。

我不确定确切的问题出在哪里。这是我的代码的 sn-p。在 headerParam 中,我有需要提交的身份验证令牌。

Invocation.Builder invocationBuilder =  null;
WebTarget target = _client.target(url);
invocationBuilder = target.request(MediaType.MULTIPART_FORM_DATA_TYPE);
if(headerParam.size()!=0){
    MultivaluedMap<String, Object> multivaluedMap = new MultivaluedHashMap<>(headerParam);
    invocationBuilder.headers(multivaluedMap);
}
MultiPart multiPart = new MultiPart();
log.info(methodName+"Hello");
FileDataBodyPart fileDataBodypart = new FileDataBodyPart("file",new File(path));
multiPart.bodyPart(fileDataBodypart);
    
Response response = invocationBuilder.post(Entity.entity(multiPart,MediaType.MULTIPART_FORM_DATA_TYPE ));
log.info(methodName+"so reponse is : "+response);

我还在 pom 文件中添加了 pom 依赖项。

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-multipart</artifactId>
    <version>2.22</version>
</dependency>

有人可以帮助解决这个问题的原因。是否存在版本控制或其他问题。

【问题讨论】:

    标签: java maven jersey multipartform-data jersey-client


    【解决方案1】:

    您具有多部分依赖项,但您仍需要向客户端或 WebTarget 注册 MultiPartFeature

    _client.register(MultiPartFeature.class);
    // or
    target.register(MultiPartFeature.class);
    

    【讨论】:

    • 谢谢保罗。注册依赖后我就可以连接了
    猜你喜欢
    • 2017-08-05
    • 2015-12-13
    • 2021-05-26
    • 2013-04-16
    • 1970-01-01
    • 2012-08-21
    • 2013-10-06
    • 2021-06-15
    • 1970-01-01
    相关资源
    最近更新 更多