restlet2.0学习——请求超时设置
一般,我们在请求一个rest service的时候,总是希望可以设置一些超时的参数,这样便于控制,如果service一直没有响应,可以有所反馈。
在http client 的请求中有两种可以设置的超时
connect连接超时和response反馈超时。
在connect连接超时,restlet已经提供了API去设置参数。而response反馈超时,restlet2.0还没有提供响应的API,官方也说以后应该会提供,但是还没有列入相应的计划中。
由于我们知道restlet底层使用的是httpclient进行http响应。而httpclient是由相应的response反馈超时。所以在这里把这些超时设置都先记录下来。
需要org.restlet.ext.httpclient支持
下面所有的代码都是需要
Client client = new Client(new Context(), Protocol.HTTP);
去创建一个客户端的连接端。而时间单位都是ms。
connect连接超时
当我们的client去访问server端,但是在寻找server端的时候长时间的找不到,(一般情况为server端不可达,server端被关闭的情况)这个时候,连接超时就可以控制寻找server端的时间,如果超出了限定的时间,那么就认为该server端的rest service 不可达。
client.setConnectTimeout(3000);
response反馈超时
当我们访问某个server端的时候,找到了该server端,并和它建立了连接,运行server端调用的程序,但是server端的执行程序可能因为死机或者其他原因,迟迟没有反馈信息给client端。这个时候我们就可以使用response反馈超时来限定时间,当超过设定的时间,我们就认为该和该server端的交流有问题,或者server端死机。
client.getContext().getParameters().add("socketTimeout",String.valueOf(6000));
直接添加socketTimeout变量来限定。