Rest 使用Jersey客户端删除文件时会出现“删除”;服务器重定向次数过多”;错误

Rest 使用Jersey客户端删除文件时会出现“删除”;服务器重定向次数过多”;错误,rest,jersey,Rest,Jersey,我用ApacheJersey客户端实现了一系列自动化测试用例。除了一个我在RESTfulWebService上删除文件的例子外,其他一切都很好。错误会发生一段时间,不能每次都重现,但确实发生了 我用Jersey删除文件的代码非常简单直观 Client client = Client.create(); WebResource resource = client.resource(uri); ClientResponse response = resource.delete(ClientRespo

我用ApacheJersey客户端实现了一系列自动化测试用例。除了一个我在RESTfulWebService上删除文件的例子外,其他一切都很好。错误会发生一段时间,不能每次都重现,但确实发生了

我用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)
com.sun.jersey.api.client.clienthandler异常:java.net.ProtocolException:服务器重定向次数过多(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)
原因:java.net.ProtocolException:服务器重定向次数过多(20次)
net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1446)
net.HttpURLConnection.getResponseCode(HttpURLConnection.java:379)
com.sun.jersey.client.urlconnection.URLConnectionClientHandler.\u调用(URLConnectionClientHandler.java:240)com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handler(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)
希望有人能给点提示?
谢谢。

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


调用
client.setFollowRedirects(false)以避免客户端进入重定向循环。

您的资源看起来如何?你能把delete方法粘贴到服务器端吗?马丁,我在服务器端没有这个方法。API已经运行了一段时间,没有出现任何问题。如果请求是从网页XmlHttpRequest发送的,则删除操作也有效。这是我唯一发现有问题的泽西岛客户。它还可以删除服务器上的json对象,但在删除服务器上的图像文件时,会随机出现上述太多重定向错误。