gpt4 book ai didi

java - Jersey 的 JSON MediaType

转载 作者:行者123 更新时间:2023-11-30 09:00:21 26 4
gpt4 key购买 nike

我创建了一个使用 REST 服务器进行 CRUD 操作的 Web 应用程序。我使用 java Jersey 和 gradle。当我执行 POST 操作时,我以 JSON 格式发送对象,如下所示:

ToDo t = new ToDo(...); // Object to be posted
Response response = client.target("http://localhost:8091/todos")
.request(MediaType.APPLICATION_JSON)
.post(Entity.entity(t, MediaType.APPLICATION_JSON));

但是它抛出一个异常:

org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json, type=class todos.ToDo, genericType=class todos.ToDo.

我的build.gradle:

buildscript {
repositories {
jcenter()
mavenCentral()
}

dependencies {
classpath (group: 'com.sahlbach.gradle', name: 'gradle-jetty-eclipse-plugin', version: '1.9.+')
}
}


apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'jettyEclipse'
apply plugin: 'eclipse'
apply plugin: 'eclipse-wtp'


repositories {
mavenCentral()
}

dependencies {
providedCompile 'javax.servlet:javax.servlet-api:3.0.1'
compile 'org.glassfish.jersey.core:jersey-client:2.3.1'
}

Here my full project

最佳答案

您将需要一个提供程序来处理 JSON。 JAX-RS 使用 MessageBodyReaderMessageBodWriter 来编码和解码不同的内容类型。开箱即用不支持 JSON。我们需要添加一个具有所需提供程序的模块

我不熟悉 Gradle 和构建文件,也不熟悉如何添加依赖项,但是对于 Maven,这是 the Jersey User Guide 中提到的依赖项作为 JSON 绑定(bind)支持的首选依赖项

<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
<version>#{jersey.version}</version>
</dependency>

更新

所以看起来对于 Gradle 你只需要添加这个依赖

compile: 'org.glassfish.jersey.media:jersey-media-moxy:2.13'

加上这个,提供者应该被 Jersey 客户端自动发现/配置

关于java - Jersey 的 JSON MediaType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26830759/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com