java - 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 进行了测试并且工作正常。
解决方案
推荐阅读
- c++ - 如何在不指定模板类型的情况下声明通用抽象类的对象
- opencart - 如何在管理面板中删除广告 opencart
- google-cloud-platform - 游戏服务器 - 高延迟
- swift - 如果 swift 表格视图中有更多(大约 10 到 20 个)部分,如何返回部分值?
- java - 如何将某些未知语言环境中的字符串日期转换为其他已知语言环境?
- python-3.x - 如何使用 cv2.waitKey() 等待两个不同的键
- cron - 每两周运行一次任务的 Cron 作业
- python-3.x - Postgres sql Inner join 和 Delete 查询都返回不同的结果
- bash - 在 Mac OS 的自动化操作中运行“pod install” - 权限被拒绝
- android - React-native release apk 拒绝安装