RESTful API客户端

时间:2015-02-24 10:01:31

标签: api rest client

我是RESTful API客户端开发的新手。我有一个示例客户端代码集成到REST服务器。下面是同一拍摄。

public TsbPublishClient() {
    client = javax.ws.rs.client.ClientBuilder.newClient();
    webTarget = client.target(BASE_URI).path("publication");
}
public <T> T getJson(Class<T> responseType, String product, String version, String category) throws ClientErrorException {
    WebTarget resource = webTarget;
    resource = resource.path(java.text.MessageFormat.format("registry/{0}/{1}/{2}", new Object[]{product, version, category}));
    return resource.request(javax.ws.rs.core.MediaType.APPLICATION_JSON).get(responseType);
}

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

我的问题是如何从我的主类调用getJson()方法。返回类型为T,它接受responseType参数,类型为Class&lt; T&gt;

先谢谢。

1 个答案:

答案 0 :(得分:1)

我有点惊讶你想使用JAX-WS来访问RESTful API。在此技术中,Web服务操作调用由基于XML的协议(如SOAP)表示。

有几种技术可以调用RESTful应用程序。以下是其中两个:

  • Restlet - 一个轻量级且强大的Java REST框架,可以解决客户端和服务器端问题。
  • JAX-RS (JSR 311:JAX-RS:用于RESTful Web服务的Java API) - 用于使用和生成RESTful应用程序的标准化API。 Restlet提供了此规范的实现。

以下代码描述了具有Restlet的客户端示例:

ClientResource cr = new ClientResource("http://(...)/contacts");
MyDataBean bean = cr.get(MediaType.APPLICATION_JSON);

以下代码描述了使用JAX-RS的客户端示例:

Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://(...)")
                         .path("contacts");

MyDataBean bean = target
       .request(MediaType.APPLICATION_JSON_TYPE)
       .get(MyDataBean.class);

这两个工具都可以利用内容(JSON,XML,YAML,...)/ POJO转换,例如Jackson

希望它可以帮到你, 亨利