- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试将 Jersey 与我自己的 json MessageBodyReader/MessageBodyWriter 一起使用(因为我没有在我的域类上使用 @XmlRootElement... 注释)。
@Provider
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public final class MyGsonMessageBodyHandler implements MessageBodyWriter<Object>, MessageBodyReader<Object> {
...
}
Jersey 使用此类作为 messagebodywriter(因为它在实现的方法 writeTo 中的断点处停止)。但是它没有将此类视为 messagebodyreader(即使我将此类分解为 messagebodyreader/messagebodywriter 的单独实现,它仍然拒绝使用我的 messagebodyreader)。
测试代码如下(jersey-grizzly):
final Greeting greeting = resource.path("/greeting")
.queryParam("name", name)
.accept(MediaType.APPLICATION_JSON)
.type(MediaType.APPLICATION_JSON)
.get(Greeting.class);
我得到的错误如下所示:
A message body reader for Java class test.Greeting, and Java type class test.Greeting, and MIME media type application/json was not found
我想知道编写自己的 MessageBodyReader 需要什么样的魔法?
最佳答案
一段时间后,我找到了问题的根本原因。我对 MessageBodyReader/Writer 的实现没问题(而且我在 RESTlet 上运行良好),但是如果您使用 JerseyTest,请不要忘记将您的 MessageBodyReader/Writer 添加到它的 ClientConfig 中:
/**
* Creates custom REST client config which is mandatory since we don't use any JSON providers.
* @return Jersey Client Config with the required classes to read/write in(out)coming data.
*/
private static ClientConfig createClientConfig() {
final ClientConfig config = new DefaultClientConfig();
config.getClasses().add(GsonMessageBodyHandler.class);
config.getClasses().add(GsonAwareContextResolver.class);
return config;
}
/**
* Public ctor
* @throws com.sun.jersey.test.framework.spi.container.TestContainerException On error
*/
public MyRestExposureTest() throws TestContainerException {
super(new WebAppDescriptor.Builder("my.rest.package")
.clientConfig(createClientConfig())
.contextPath("/")
.build());
}
否则您的客户端代码将无法读取/写入您的 POJO。
关于java - Jersey 没有看到我的 MessageBodyReader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6111836/
我有一个MessageBodyReader具有以下类: @Provider @Consumes(MediaType.APPLICATION_JSON) public class Transaction
给定类似的内容: 例如 class User{ String name; String someField1; } @Consumes("some/media-type") class Re
我正在为 restful web 服务制作一个 java 客户端,我想在请求正文中发送一个字符串。 这是我的课。 public class params { private String t
我正在尝试实现一个新的 MessageBodyReader/Writer 组合,但阅读器部分遇到问题。鉴于以下声明 public class Jsr367EnumProvider implements
我有这个界面: @Path("inbox") public interface InboxQueryResourceTest { @POST @Path("{membershipEx
我有课 public class Tree { private T value; private Tree parent; private List> children;
我有某种类型的 XSD 架构,我们将其命名为 A。 然后我尝试使用 XSD 架构验证编写 MessageBodyReader - 如果我在那里传递单个对象,它就可以工作。但我怎样才能让它读取这些类型的
我编写了一个简单的 RestEasy 客户端代理来执行 iTunes 搜索。它看起来像这样: @Path("/") public interface AppleAppStoreLookupClient
我正在尝试将 Jersey 与我自己的 json MessageBodyReader/MessageBodyWriter 一起使用(因为我没有在我的域类上使用 @XmlRootElement... 注
所以,我有一个 REST 应用程序,看起来像这样: @GET @Produces(MediaType.APPLICATION_JSON) @Path("/getpartners") public Ha
我正在从提供者处了解 MessageBodyReader 方法的工作原理。我看到该方法返回一个对象,但我不确定如何从服务访问该对象。我能否得到有关如何从阅读器类返回对象的解释?这将帮助我为所有 DTO
首先我应该说我是 Maven 的新手,甚至认为我不认为 Maven 与这个错误有关。我正在使用 Eclipse 4.2.1 和 m2e 我有从 ckan4j 获得的代码开发者 Client c = C
我想使用 Grails-jaxrs plugin实现自定义 MessageBodyReaderSupport从客户端读取 UserDto 类。 如何实现 UserDtoReader 才能获取 User
我有一个 REST api,它返回一个 json 格式的对象,Content-Type 为 application/json,非常标准。 我正在使用 Jersey 的测试框架创建一个基本的 TestN
以下方法不允许我的 servlet 容器启动: @PUT public String upload(final Customer customer, final Control control) {
我正在尝试使用预配置的资源实例在预配置的端口/url 上启动 Jersey。我不太清楚如何正确地做到这一点。 这是一段代码。请帮我填空: @Component @PerRequest @Path("/
我在 Response 对象中返回一个 StreamingOutput: @GET @Path("/downloadFile/{filename}") @Produces(MediaType.TEXT
我已经在 SO 上发现了一些类似的问题,但似乎没有一个能解决我的特定问题,而且我一直无法自己找到解决方案。 这是我遇到的错误: Caused by: org.glassfish.jersey.mess
我试图在 Jersey 的 MessageBodyReader 中读取 APPLICATION_FORM_URLENCODED。当我尝试使用 BufferedReader 读取流时,流返回空数据 这是
我正在尝试从 http://api.openweathermap.org/data/2.5/forecast/daily?lat=35&lon=139&cnt=10&mode=json 接收 json
我是一名优秀的程序员,十分优秀!