我有一堆用Apache Jersey客户端实现的自动化测试用例。除了针对RESTful webservice删除文件的一种情况外,一切都运行良好。错误发生了一段时间,并且每次都无法复制,但它确实会发生。
我使用Jersey
删除文件的代码非常简单直观Client client = Client.create();
WebResource resource = client.resource(uri);
ClientResponse response = resource.delete(ClientResponse.class);
上面的代码正在删除uri指定的服务器上的文件,这是我'服务器重定向次数太多次(20)'错误的唯一情况。它会在某个时候通过,但有时会失败。我正在寻找更多的线索来开始调查。
我得到的例外是:
com.sun.jersey.api.client.ClientHandlerException: java.net.ProtocolException: Server redirected too many times (20)
com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:149)
com.sun.jersey.api.client.Client.handle(Client.java:648)
com.sun.jersey.api.client.WebResource.handle(WebResource.java:680)
com.sun.jersey.api.client.WebResource.delete(WebResource.java:272)
<more my user exceptions are skipped here...>
Caused by: java.net.ProtocolException: Server redirected too many times (20)
sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1446)
java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:379)
com.sun.jersey.client.urlconnection.URLConnectionClientHandler._invoke(URLConnectionClientHandler.java:240) com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:147)
com.sun.jersey.api.client.Client.handle(Client.java:648)
com.sun.jersey.api.client.WebResource.handle(WebResource.java:680)
com.sun.jersey.api.client.WebResource.delete(WebResource.java:272)
希望有人可以提供一些提示吗? 感谢。
答案 0 :(得分:1)
看起来服务器因某种原因发送重复重定向。
在Jersey客户端实例上调用client.setFollowRedirects(false);
以避免客户端进入重定向循环。