4

基本上我有一个安静的服务(post),它消耗(application/json)并产生(application/json)。此服务的单个参数是带注释的 java 对象。

我正在使用org.jboss.resteasy.client.ClientRequest将请求发送到服务。但是,我在客户端收到此异常和异常:

找不到内容类型application/json类型的作者。

这是否意味着我缺少一些库 jar 或者我必须为 application/json 编写自己的编写器?

我正在使用resteasy 1.1

标记

4

3 回答 3

7

拉曼是​​正确的。Jettison 是一个有效的选择。您也可以使用杰克逊。如果您使用的是 maven,只需在 pom 中包含以下依赖项即可:

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jackson-provider</artifactId>
        <version>2.3.2.Final</version>
    </dependency>

此时您编写代码应该没有问题,例如:

    SomeBean query = new SomeBean("args")
    request.body("application/json", query);
    ClientResponse response = request.post();
于 2012-04-05T15:05:35.447 回答
2

实际上我遇到了同样的问题,我确实通过为 application/json mime 类型添加 jettison 提供程序来解决它。我不知道 resteasy 1.1 是否包含 jettison 提供程序,但 1.2 版包含。此外,如果您使用的是 jdk 1.6,则必须排除 javax.xml.stream:stax-api jar 文件,否则会出现问题。

这是示例:

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;


@XmlRootElement(name="account")
public class Account {

    private Long id;
    private String accountNo;


    public Account(){}
    public Account(String no)   {
        accountNo=no;
    }


    @Id
    @XmlElement
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }

    @XmlElement
    public String getAccountNo() {
        return accountNo;
    }
    public void setAccountNo(String a) {
        accountNo = a;
    }

}

和 JAXB 类:

import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;


    @Path("/account")
    public class AccountService {


        @GET
        @Path("/{accountNo}")
        @Produces("application/json")
        public Account getAccount(@PathParam("accountNo") String accountNo) {
                   return new Account(accountNo);
        }

    }

就是这样,祝你有美好的一天!

于 2010-09-09T04:51:22.610 回答
1

将以下添加到 Resource 类或导致异常的方法

@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
于 2013-11-28T21:00:14.753 回答