相关疑难解决方法(0)

RESTEasy:找不到内容类型application/json类型的writer

我有一个宁静的服务(post)消耗(application/json)并生成(application/json).此服务的单个参数是带注释的java对象.

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

找不到内容类型application/json类型的writer.

这是否意味着我缺少一些图书馆罐子,或者我必须为application/json编写自己的编写器?

我正在使用resteasy 2.3.3.Final

以下是我添加到我的pom中的各种依赖项,我认为可能与之相关:

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxrs</artifactId>
        <version>2.3.3.Final</version>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.jaxrs</groupId>
        <artifactId>jackson-jaxrs-json-provider</artifactId>
        <version>2.0.5</version>
    </dependency>

    <dependency>
       <groupId>org.jboss.resteasy</groupId>
       <artifactId>resteasy-jaxb-provider</artifactId>
       <version>2.3.4.Final</version>
    </dependency>

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

    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-core-asl</artifactId>
        <version>1.3.0</version>
    </dependency>

    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.3.0</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

马特

java rest resteasy maven

8
推荐指数
2
解决办法
3万
查看次数

ClientRequest,如何正确地将POJO序列化为json数据?找不到内容类型application/json类型的writer:

对于REST服务(RESTeasy),我创建了JUnit测试用例,例如:

@Test
public void a100_insertAddressTest() throws Exception {
     Address addr = new Address(1, "testStreet", "1", (short) 1234,
     "testCity");

    ClientRequest request = new ClientRequest(BASE_URL + "customerID/{id}",
            sslExecutor_schusb);
    request.body(MediaType.APPLICATION_XML, addr).pathParameter(
            "id", 1);
    ClientResponse<String> response = request.post(String.class);

    Assert.assertEquals(201, response.getStatus());

    response.releaseConnection();
    request.clear();
}
Run Code Online (Sandbox Code Playgroud)

如果我将请求主体的媒体类型更改为"application/json",则测试用例将失败并显示错误:

java.lang.RuntimeException: could not find writer for content-type application/json type: at.fhj.ase.dao.data.Address
    at org.jboss.resteasy.client.ClientRequest.writeRequestBody(ClientRequest.java:469)
    at org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor.loadHttpMethod(ApacheHttpClient4Executor.java:221)
    at org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor.execute(ApacheHttpClient4Executor.java:107)
    at org.jboss.resteasy.core.interception.ClientExecutionContextImpl.proceed(ClientExecutionContextImpl.java:39)
    at org.jboss.resteasy.plugins.interceptors.encoding.AcceptEncodingGZIPInterceptor.execute(AcceptEncodingGZIPInterceptor.java:40)
    at org.jboss.resteasy.core.interception.ClientExecutionContextImpl.proceed(ClientExecutionContextImpl.java:45)
    at org.jboss.resteasy.client.ClientRequest.execute(ClientRequest.java:443)
    at org.jboss.resteasy.client.ClientRequest.httpMethod(ClientRequest.java:674)
    at org.jboss.resteasy.client.ClientRequest.post(ClientRequest.java:565)
    at org.jboss.resteasy.client.ClientRequest.post(ClientRequest.java:570)
    at at.fhj.ase.business.ServiceAddressImplTest.a100_insertAddressTest(ServiceAddressImplTest.java:59)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown …
Run Code Online (Sandbox Code Playgroud)

java serialization json resteasy

2
推荐指数
1
解决办法
3815
查看次数

标签 统计

java ×2

resteasy ×2

json ×1

maven ×1

rest ×1

serialization ×1