用于调用REST服务的JavaAPI

用于调用REST服务的JavaAPI,java,rest,Java,Rest,有谁能推荐一个更好的开源JavaAPI来调用REST服务吗?还想知道restletapi是否支持NTLM身份验证 谢谢这是REST—关键是您不需要API本身,只需要HttpURLConnection。您应该能够单独使用基本的JavaSDK与任何真正的RESTful服务交互。您可以使用ApacheCommonsHttpClient获得更高的性能,但这不是必须的 我使用resteasy作为rest框架,它工作得很好,很简单(重写和测试都可以,与easymock相同)。 作为示例代码: @Path("

有谁能推荐一个更好的开源JavaAPI来调用REST服务吗?还想知道restletapi是否支持NTLM身份验证


谢谢

这是REST—关键是您不需要API本身,只需要HttpURLConnection。您应该能够单独使用基本的JavaSDK与任何真正的RESTful服务交互。您可以使用ApacheCommonsHttpClient获得更高的性能,但这不是必须的

我使用resteasy作为rest框架,它工作得很好,很简单(重写和测试都可以,与easymock相同)。 作为示例代码:

@Path("/webservice")

public class Web
{

    @GET
    @Path("{web}")
    @ProduceMime("application/xml")
    public String test(@QueryParam("param") String param, @PathParam("web") String web) 
    {
    //  code here
    }
}
  • @Path是类的“根路径”(实际的“根”将在components.xml上配置)
  • @得到的是休息
  • ProduceMime或consumerMIME是您应该使用或生成的mime
  • @QueryParam是url的参数,@PathParam是您应该获得的参数
因此,此get将接收来自/webservice/web?param=lalala的调用,并返回应用程序/xml格式的字符串。它有一个很好的客户端API

用法示例:

Request request = new Request(Method.GET, "http://my/rest/api");

Client client = new Client(Protocol.HTTP);

Response response = client.handle(request);

//get response representation and process

如果您只希望调用REST服务并获得响应,可以尝试:

//向“/lotto”发出获取请求
字符串json=get(“/lotto”).asString()
//解析JSON响应
列出winnderIds=with(json.get)(“lotto.winners.winnerId”);
//向“/购物”发出POST请求
字符串xml=post(“/shopping”).andReturn().body().asString()
//解析XML
节点category=with(xml.get)(“shopping.category[0]”);

复制它不是必要的,但IDE也不是,关键是有一些库来处理硬部分(HTTPS、表示处理等),因此您可以专注于提供功能开发占用空间相对较小的应用程序(包括图形资产在内的2mb总包),我肯定在努力避免添加额外的库/许可,所以这对我很有帮助!我同意。另外,正在开发的新版本Restlet即将发布2.0,也支持“调用”资源的新方法—客户端资源。换句话说,您可以用远程资源的URL实例化一个资源对象,然后获取它的表示形式,发送一个新的表示形式,等等。我还没有使用它,但我对它很感兴趣。
// 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]");