- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在从提供者处了解 MessageBodyReader 方法的工作原理。我看到该方法返回一个对象,但我不确定如何从服务访问该对象。我能否得到有关如何从阅读器类返回对象的解释?这将帮助我为所有 DTO 应用阅读规则。提前致谢!
服务:
@POST
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Path("/CreateAccount")
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response createAccount(@Context HttpServletRequest req) {
String a = "Reader success? ";//Would to see that string here!
return Response.ok().build();
}
提供者:
@Provider
public class readerClass implements MessageBodyReader<Object>
{
@Override
public boolean isReadable(Class<?> paramClass, Type paramType,
Annotation[] paramArrayOfAnnotation, MediaType paramMediaType) {
// TODO Auto-generated method stub
return true;
}
@Override
public Object readFrom(Class<Object> paramClass, Type paramType,
Annotation[] paramArrayOfAnnotation, MediaType paramMediaType,
MultivaluedMap<String, String> paramMultivaluedMap,
InputStream paramInputStream) throws IOException,
WebApplicationException {
// TODO Auto-generated method stub
return "Successfully read from a providers reader method";
}
}
最佳答案
你误解了 MessageBodyReader 的用途,它的用途如下:
Contract for a provider that supports the conversion of a stream to a Java type. To add a MessageBodyReader implementation, annotate the implementation class with @Provider. A MessageBodyReader implementation may be annotated with Consumes to restrict the media types for which it will be considered suitable
例子: 如果你有一个用例,你得到了除 xml/json 之外的自定义格式,你想提供你自己的 UnMarshaller,你可以使用 messagebody reader
@Provider
@Consumes("customformat")
public class CustomUnmarshaller implements MessageBodyReader {
@Override
public boolean isReadable(Class aClass, Type type, Annotation[] annotations, MediaType mediaType) {
return true;
}
@Override
public Object readFrom(Class aClass, Type type, Annotation[] annotations, MediaType mediaType, MultivaluedMap multivaluedMap, InputStream inputStream) throws IOException, WebApplicationException {
Object result = null;
try {
result = unmarshall(inputStream, aClass); // un marshall custom format to java object here
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
在网络服务中你可以像..一样使用它
@POST
@Path("/CreateAccount")
@Consumes("custom format")
public Response createAccount(@Context HttpServletRequest req,Account acc) {
saveAccount(acc); // here acc object is returned from your custom unmarshaller
return Response.ok().build();
}
更多信息: Custom Marshalling/UnMarshalling Example , Jersy Entity Providers Tutorial
关于java - JAX-RS MessageBodyReader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24153827/
我有一个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
我是一名优秀的程序员,十分优秀!