Asynchronous Restlet Client 2.2-带回调的非阻塞异步请求
我只是使用Restlet客户端Api 2.2进行了一些游戏和测试,但我没有得到一个回调可以正常工作的非阻塞异步请求。我已经在谷歌上广泛搜索过了 但真的没有找到一个(有效的)非阻塞解决方案的答案 我有以下两种方法: 方法1(客户请求):Asynchronous Restlet Client 2.2-带回调的非阻塞异步请求,asynchronous,callback,restlet,restlet-2.0,Asynchronous,Callback,Restlet,Restlet 2.0,我只是使用Restlet客户端Api 2.2进行了一些游戏和测试,但我没有得到一个回调可以正常工作的非阻塞异步请求。我已经在谷歌上广泛搜索过了 但真的没有找到一个(有效的)非阻塞解决方案的答案 我有以下两种方法: 方法1(客户请求): Client c = new Client(Protocol.HTTP); Request r = new Request(Method.GET, url); System.out.println("START1"); c.handle(r, new Unifor
Client c = new Client(Protocol.HTTP);
Request r = new Request(Method.GET, url);
System.out.println("START1");
c.handle(r, new Uniform() {
@Override
public void handle(Request request, Response response) {
int statusCode = response.getStatus().getCode();
System.out.println(statusCode);
}
});
System.out.println("START2");
ClientResource cr = new ClientResource(url);
cr.setOnResponse(new Uniform() {
@Override
public void handle(Request request, Response response) {
int statusCode = response.getStatus().getCode();
System.out.println(statusCode);
}
});
System.out.println("START1");
cr.get();
System.out.println("START2");
方法2(ClientResource-setOnResponse()-get()):
Client c = new Client(Protocol.HTTP);
Request r = new Request(Method.GET, url);
System.out.println("START1");
c.handle(r, new Uniform() {
@Override
public void handle(Request request, Response response) {
int statusCode = response.getStatus().getCode();
System.out.println(statusCode);
}
});
System.out.println("START2");
ClientResource cr = new ClientResource(url);
cr.setOnResponse(new Uniform() {
@Override
public void handle(Request request, Response response) {
int statusCode = response.getStatus().getCode();
System.out.println(statusCode);
}
});
System.out.println("START1");
cr.get();
System.out.println("START2");
两种方法的控制台输出始终为:
START1
Starting the internal HTTP client
有人在这里等着
有人能给我一个提示,让这些方法中的一种成为非阻塞的吗?对于restletapi,这可能吗?我缺少什么,我需要另一个连接器,还是我必须自己为请求定义一个单独的线程 我快速回答,出现了一个问题: 最初,通过使用内部nio连接器可以获得对异步的支持。 由于此连接器未完全稳定,因此决定将其从核心模块中提取出来,并将其暴露在专用的org.restlet.ext.nio模块中。 这解释了代码阻塞的原因,因为当前的内部连接器(在2.2和2.3分支中)不支持它 此时,可以使用nio扩展提供支持,但该扩展尚未完全稳定。因此,我们不打算鼓励您使用它。 我们正在研究另一个场景,其中依赖Jetty提供的客户端连接器。
请继续关注。我的环境版本是2.0.8,设置了无阻塞响应。我希望您提到的稳定性问题不会成为我们的问题,因为我确实希望启用客户端异步功能。