我有一个java客户端,它连接到一个java服务器(Server),该服务器是用jersey 1.19实现的,所以我在我的pom中添加了相同版本的jersey客户机,一切都很好。不,我的客户端需要连接到其他java服务器(服务器B),该服务器是使用jersey版本2.17实现的,然后问题就开始了……当我试图发送请求到服务器B时,我得到了org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException
和服务器A,所有的请求都正常工作。经过一番研究后,我明白我需要改变我的pom文件中的球衣客户端版本。然后,对服务器B的请求运行良好,但是对服务器A的请求得到了相同的异常,我尝试将我的pom放在我的pom中,这两个版本都是jersey客户端版本,只有服务器B运行良好。我能用两种版本的泽西服务器工作吗?
我在pom文件中的依赖项
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.17</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
<version>2.17</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.19</version>
</dependency>
我得到的异常堆栈跟踪:
Jan 03, 2017 5:03:22 PM org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor aroundWriteTo
SEVERE: MessageBodyWriter not found for media type=application/json, type=class com.sun.jersey.api.representation.Form, genericType=class com.sun.jersey.api.representation.Form.
[ERROR] 2017-01-03 17:03:23 [JavaFX Application Thread] controller.login(76) - Unable To Connect to the server.
org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json, type=class com.sun.jersey.api.representation.Form, genericType=class com.sun.jersey.api.representation.Form.
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:247) ~[jersey-common-2.17.jar:?]
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162) ~[jersey-common-2.17.jar:?]
at org.glassfish.jersey.filter.LoggingFilter.aroundWriteTo(LoggingFilter.java:302) ~[jersey-common-2.17.jar:?]
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162) ~[jersey-common-2.17.jar:?]
at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1128) ~[jersey-common-2.17.jar:?]
at org.glassfish.jersey.client.ClientRequest.writeEntity(ClientRequest.java:502) ~[jersey-client-2.17.jar:?]
at org.glassfish.jersey.client.HttpUrlConnector._apply(HttpUrlConnector.java:329) ~[jersey-client-2.17.jar:?]
at org.glassfish.jersey.client.HttpUrlConnector.apply(HttpUrlConnector.java:242) ~[jersey-client-2.17.jar:?]
at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:245) ~[jersey-client-2.17.jar:?]
at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:671) ~[jersey-client-2.17.jar:?]
at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:668) ~[jersey-client-2.17.jar:?]
at org.glassfish.jersey.internal.Errors.process(Errors.java:315) ~[jersey-common-2.17.jar:?]
at org.glassfish.jersey.internal.Errors.process(Errors.java:297) ~[jersey-common-2.17.jar:?]
at org.glassfish.jersey.internal.Errors.process(Errors.java:228) ~[jersey-common-2.17.jar:?]
发布于 2017-01-04 10:25:31
我成功地解决了这个问题,我使用了另一个名为Unirest的rest客户机,它可以很好地处理这两个服务器。谢谢
https://stackoverflow.com/questions/41458598
复制相似问题