使用Jersey客户端删除文件会导致“服务器重定向次数过多”错误

时间:2012-06-18 16:14:53

标签: rest jersey

我有一堆用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)

希望有人可以提供一些提示吗? 感谢。

1 个答案:

答案 0 :(得分:1)

看起来服务器因某种原因发送重复重定向。

在Jersey客户端实例上调用client.setFollowRedirects(false);以避免客户端进入重定向循环。