有了JSR 311及其实现,我们就有了通过REST公开Java对象的强大标准。但是,在客户端,似乎缺少可与Apache Axis for SOAP相媲美的东西-隐藏web服务并透明地将数据编组回Java对象的东西。
如何创建Java RESTful客户端?使用HTTPConnection和手动解析结果?或专门的客户端,例如Jersey或Apache CXR?
发布于 2008-10-21 12:58:39
正如我在this thread中提到的,我倾向于使用Jersey,它实现了JAX-RS,并附带了一个很好的REST客户端。如果您使用JAX-RS实现您的RESTful资源,那么Jersey客户端可以重用实体提供者,比如用于JAXB/XML/JSON/Atom等等-这样您就可以在服务器端重用与在客户端单元测试中使用的相同的对象。
例如,来自Apache Camel project的here is a unit test case,它从RESTful资源查找XML有效负载(使用JAXB object Endpoint)。资源(Uri)方法是在this base class中定义的,它只使用Jersey client API。
例如:
clientConfig = new DefaultClientConfig();
client = Client.create(clientConfig);
resource = client.resource("http://localhost:8080");
// lets get the XML as a String
String text = resource("foo").accept("application/xml").get(String.class);
顺便说一句,我希望JAX-RS的未来版本能像Jersey那样添加一个很好的客户端API
发布于 2011-02-25 04:47:26
如果您只希望调用REST服务并解析响应,那么可以尝试Rest Assured
// Make a GET request to "/lotto"
String json = get("/lotto").asString()
// Parse the JSON response
List<String> winnderIds = with(json).get("lotto.winners.winnerId");
// Make a POST request to "/shopping"
String xml = post("/shopping").andReturn().body().asString()
// Parse the XML
Node category = with(xml).get("shopping.category[0]");
发布于 2008-10-21 18:35:05
您还可以查看Restlet,它具有完整的客户端功能,比HttpURLConnection或Apache HTTP Client (我们可以将其用作连接器)等低级库更面向REST。
致以最好的问候,杰罗姆·卢维尔
https://stackoverflow.com/questions/221442
复制相似问题