首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Resteasy客户端抛出异常

Resteasy客户端抛出异常
EN

Stack Overflow用户
提问于 2014-10-22 15:04:53
回答 2查看 5.7K关注 0票数 1

我试图编写一个简单的Resteasy客户端来访问mt服务。不幸的是,我得到了错误:

代码语言:javascript
代码运行次数:0
运行
复制
Exception in thread "main" org.jboss.resteasy.client.ClientResponseFailure: Unable to find a MessageBodyReader of content-type application/json and type null
    at org.jboss.resteasy.client.core.BaseClientResponse.createResponseFailure(BaseClientResponse.java:523)
    at org.jboss.resteasy.client.core.BaseClientResponse.createResponseFailure(BaseClientResponse.java:514)
    at org.jboss.resteasy.client.core.BaseClientResponse.readFrom(BaseClientResponse.java:415)
    at org.jboss.resteasy.client.core.BaseClientResponse.getEntity(BaseClientResponse.java:377)
    at org.jboss.resteasy.client.core.BaseClientResponse.getEntity(BaseClientResponse.java:350)
    at org.jboss.resteasy.client.core.BaseClientResponse.getEntity(BaseClientResponse.java:344)
    at com.test.client.rest.employee.EmployeeClient.main(EmployeeClient.java:29)

客户代码:

代码语言:javascript
代码运行次数:0
运行
复制
ClientRequest request = new ClientRequest(ROOT_URL + "getEmp/GS");

    ClientResponse<Employee> resp = request.get(Employee.class);
    //Response resp = request.get();
    if(resp.getResponseStatus().getStatusCode() == 200)
    {
        System.out.println("resp ok!!!");
    }

    Employee e = resp.getEntity(Employee.class);
    System.out.println("path:" + e);

Rest服务代码:

代码语言:javascript
代码运行次数:0
运行
复制
@GET
    @Path("getEmp/{name}")
    @Produces("application/json")
    public Employee getEmployee(@PathParam("name") String name)
    {
        if(em.containsKey(name))
            return em.get(name);
        else
            throw new EmployeeNotFoundException("Employee with name '" + name + "' does not exists!");
    }

客户端代码响应正常。即200。相同的url在Mozilla客户端也可以正常工作。如能提供任何帮助,将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-23 14:50:08

在添加jettison提供程序jars之后,问题得到了解决。

尽管如此,我仍然觉得Resteasy-2.3.2有一些问题,最终我把我的Reateasy升级到了2.3.5,并且客户端运行得很好。

票数 0
EN

Stack Overflow用户

发布于 2014-10-22 15:31:50

确保您在客户端项目中拥有所有jackson库。如果您使用的是maven,您应该拥有以下内容:

代码语言:javascript
代码运行次数:0
运行
复制
<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jackson-provider</artifactId>
    <version>xxx</version>
</dependency>

编辑: resteasy-jaxrs和resteasy-jackson-provider使用的jars如下

代码语言:javascript
代码运行次数:0
运行
复制
[INFO] +- org.jboss.resteasy:resteasy-jaxrs:jar:2.2.1.GA:compile
[INFO] |  +- org.jboss.resteasy:jaxrs-api:jar:2.2.1.GA:compile
[INFO] |  +- org.scannotation:scannotation:jar:1.0.3:compile
[INFO] |  |  \- javassist:javassist:jar:3.12.1.GA:compile
[INFO] |  +- javax.annotation:jsr250-api:jar:1.0:compile
[INFO] |  +- javax.activation:activation:jar:1.1:compile
[INFO] |  +- commons-httpclient:commons-httpclient:jar:3.1:compile
[INFO] |  |  +- commons-logging:commons-logging:jar:1.0.4:compile
[INFO] |  |  \- commons-codec:commons-codec:jar:1.2:compile
[INFO] |  +- org.apache.httpcomponents:httpclient:jar:4.0.3:compile
[INFO] |  |  \- org.apache.httpcomponents:httpcore:jar:4.0.1:compile
[INFO] |  \- net.jcip:jcip-annotations:jar:1.0:compile
[INFO] \- org.jboss.resteasy:resteasy-jackson-provider:jar:2.2.1.GA:compile
[INFO]    +- org.codehaus.jackson:jackson-core-asl:jar:1.6.3:compile
[INFO]    +- org.codehaus.jackson:jackson-mapper-asl:jar:1.6.3:compile
[INFO]    +- org.codehaus.jackson:jackson-jaxrs:jar:1.6.3:compile
[INFO]    \- org.codehaus.jackson:jackson-xc:jar:1.6.3:compile

还可以尝试在客户端实现中设置接受内容类型。

代码语言:javascript
代码运行次数:0
运行
复制
request.accept("application/json");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26510712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档