首页 > 解决方案 > org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyReader not found for media type=text/html;charset=iso-8859-1,

问题描述

我正在使用 jersey 调用带有 java 客户端的 rest API,这是我的代码:

    public static ContractInfo getContractInfo(Message message) throws NoSuchAlgorithmException, KeyManagementException {
    //SSLContext ctx = SSLContext.getInstance("SSL");
    //ctx.init(null, null, null);
    //Client client = ClientBuilder.newBuilder().sslContext(ctx).build();
    SSLContext sslContext = getSslContext();
    HostnameVerifier allHostsValid = new NoOpHostnameVerifier();
    //ClientConfig config = new ClientConfig();
    //config.register(JacksonJaxbJsonProvider.class);

    Client client = ClientBuilder.newBuilder()
            .sslContext(sslContext)
            .hostnameVerifier(allHostsValid)
            .build();
    WebTarget target=client.target("IP_ADRESS");
    Response restResponse = target.request(MediaType.APPLICATION_JSON).post(Entity.json(message));
    
    ContractInfo contractInfo = restResponse.readEntity(ContractInfo.class);
    
    return contractInfo;
}

我得到以下例外:

org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyReader not found for media type=text/html;charset=iso-8859-1, type=class com.atos.activhttp.model.ContractInfo, genericType=class com.atos.activhttp.model.ContractInfo.
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.aroundReadFrom(ReaderInterceptorExecutor.java:208)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:132)
at org.glassfish.jersey.message.internal.MessageBodyFactory.readFrom(MessageBodyFactory.java:1072)
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:885)
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:819)
at org.glassfish.jersey.client.ClientResponse.readEntity(ClientResponse.java:298)
at org.glassfish.jersey.client.InboundJaxrsResponse$1.call(InboundJaxrsResponse.java:93)
at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
at org.glassfish.jersey.internal.Errors.process(Errors.java:205)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:365)
at org.glassfish.jersey.client.InboundJaxrsResponse.runInScopeIfPossible(InboundJaxrsResponse.java:244)
at org.glassfish.jersey.client.InboundJaxrsResponse.readEntity(InboundJaxrsResponse.java:90)
at com.atos.activhttp.rest.RestConnection.getContractInfo(RestConnection.java:38)

APi 使用 restTemplate 进行了测试并且工作正常。

标签: javajsonjersey

解决方案


推荐阅读