相关疑难解决方法(0)

如何使用Jackson(2.x)提供程序设置Jersey客户端来处理POST请求

我正在努力设置Jersey客户端来测试对资源的POST请求.

我的泽西岛和杰克逊依赖关系看起来像这样:

<dependencies>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-grizzly2-http</artifactId>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-jackson</artifactId>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.jaxrs</groupId>
        <artifactId>jackson-jaxrs-json-provider</artifactId>
        <version>${jackson.version}</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-client</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.glassfish.jersey</groupId>
            <artifactId>jersey-bom</artifactId>
            <version>${jersey.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
Run Code Online (Sandbox Code Playgroud)

我正在使用Jersey 2.4和Jackson 2.2.3.

我像这样设置Client amd WebTarget:

client = JerseyClientBuilder.newBuilder().build();

target = client.target(Main.BASE_URI);
Run Code Online (Sandbox Code Playgroud)

我像这样设置服务器:

ResourceConfig rc = new ResourceConfig().packages("com.my.package.is.here");
HttpServer httpServer = GrizzlyHttpServerFactory
                           .createHttpServer(URI.create(BASE_URI), rc);
Run Code Online (Sandbox Code Playgroud)

我尝试在资源上测试POST请求:

ClientResponse response = target.path(resourceIdentifier)
                             .request(MediaType.APPLICATION_JSON_TYPE)
                             .post(Entity.json(testObjectJSON.toString()), 
                                       ClientResponse.class);
Run Code Online (Sandbox Code Playgroud)

目前,我收到以下错误:

javax.ws.rs.ProcessingException: Error reading entity from input stream.
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:849)
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:768)
at org.glassfish.jersey.client.InboundJaxrsResponse.readEntity(InboundJaxrsResponse.java:96)
at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:761) …
Run Code Online (Sandbox Code Playgroud)

post json jersey jackson jersey-client

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

jackson ×1

jersey ×1

jersey-client ×1

json ×1

post ×1