0

Apache Jersey クライアントを使用して実装された一連の自動化テスト ケースがあります。RESTful Web サービスに対してファイルを削除する 1 つのケースを除いて、すべてが非常にうまく機能します。エラーはしばらく発生し、毎回再現することはできませんが、発生します。

ファイルを削除するために私が持っているコードは、ジャージーでは非常にシンプルで直感的です

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)

誰かがヒントをくれることを願っていますか?ありがとう。

4

1 に答える 1

1

サーバーが何らかの理由でリダイレクトを繰り返し送信しているようです。

client.setFollowRedirects(false);クライアントがリダイレクト ループに陥らないように、Jersey クライアント インスタンスを呼び出します。

于 2012-06-19T14:11:45.790 に答える