使用泽西客户端删除文件会"server redirected too many times"错误



我有一堆用Apache Jersey客户端实现的自动化测试用例。一切都运行良好,除了一种情况,即我针对 RESTful 网络服务删除文件。错误会发生一段时间,并且无法每次都重现,但确实会发生。

我删除文件的代码非常简单直观 泽西岛

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)

希望有人能给出一些提示?谢谢。

看起来服务器出于某种原因正在发送重复的重定向。

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

最新更新