java - 从 Restful 服务中检索实体列表(在客户端应用程序内)

标签 java web-services rest client entities

我是 Rest 网络服务的新手,我说我是使用 Netbeans 创建这个网络服务的

@Path("browse")
@Stateless
public class ArticleBrowseResource {

   @EJB
   private ArticleSearcherLocal ejbRef;

   @GET
   @Produces(MediaType.APPLICATION_XML)
   public List<Article> browse(@DefaultValue("") @QueryParam("username") String username,@QueryParam("sd") String sd) {

      // convert sd string to date
      List<Article> articles = ejbRef.search(username, date);
      return articles;
   }
}

其中 Article 是一个用 @XmlRootElement 注释的实体

现在我应该如何在我的客户端 中检索这个文章列表,为了简单起见,我们只说它是一个 Java 标准应用程序?在 SOAP Web 服务中,我知道这些对象是自动生成的,但在 Rest 中不是。

这是 Netbeans 为该服务生成的客户端类

public class ArticleBrowseClient {
  private WebResource webResource;
  private Client client;
  private static final String BASE_URI = "http://localhost:8080/cityblog/rest";

  public ArticleBrowseClient() {
    com.sun.jersey.api.client.config.ClientConfig config = new com.sun.jersey.api.client.config.DefaultClientConfig();
    client = Client.create(config);
    webResource = client.resource(BASE_URI).path("browse");
  }

  public <T> T browse(Class<T> responseType, String username, String sd) throws UniformInterfaceException {
    WebResource resource = webResource;
    if (username != null) {
        resource = resource.queryParam("username", username);
    }
    if (sd != null) {
        resource = resource.queryParam("sd", sd);
    }
    return resource.accept(javax.ws.rs.core.MediaType.APPLICATION_XML).get(responseType);
  }

  public void close() {
    client.destroy();
  }

}

解决此问题的最好和最简单的方法是什么?

感谢任何帮助, 提前谢谢

最佳答案

请尝试减少代码生成并更多地了解您实际在做什么。在服务器上,您在 JAXB 的帮助下生成 XML 消息。在客户端,您可以使用您喜欢的编程语言和库来使用此 XML。只需使用 curl 之类的工具看看“电线”上到底发生了什么。您生成的客户端站点看起来完全合理。您只需要客户端的服务器端的 Article 类。生成的代码使用 Jersey它可以默认读取每个 JAXB 的 XML 消息。因此,只需将服务器端的 Article 类放入客户端类路径中并使用它。但也请查看有线级协议(protocol)以了解 REST API 的可移植性。

关于java - 从 Restful 服务中检索实体列表(在客户端应用程序内),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8774211/

相关文章:

java - 在对象的同一个表中显示 OneToMany 列表的大小?

web-services - Spring-WS 1.5 可以与 Spring 3 一起使用吗?

ajax - Web 应用程序如何与服务器通信?

java - SQL Server JDBC 的 table.field 表示法?

Java NumberFormat 忽略美国语言环境中的逗号?

java - 如何在 Spring MVC 中使用自定义日期属性编辑器验证日期

java - 由于未知原因,Maven Webservices 项目需要很长时间才能构建

c# - 网络服务

spring - REST API中基于 token 的身份验证

c# - Web API - 返回 JSON 对象以及 HTTP 状态