Play!Framework2.1WSライブラリを使用してWebサービスリクエストを実装するのはまだ新しいです。現在、WSライブラリの動作を理解するのに問題があります。
まず、私はこのようなコードを持っています:
public static Result espnRss() {
try {
// do request
return async(
WS.url("http://espnfc.com/rss/news?section=premierleague").get().map(
new F.Function<WS.Response, Result>() {
@Override
public Result apply(WS.Response response) throws Throwable {
return ok("Success!"); // success request
}
}
)
);
} catch (Exception e) {
// exception occured
return internalServerError("Oops, connect exception occured!");
}
}
アクションをリクエストしようとすると、espnRss
SUCCESS応答が返されました。
次に、リクエストにWSタイムアウトを設定します。だから、私は以前のコードを次のように変更しました:
public static Result espnRss() {
try {
// set request timeout for 1000 ms and do request
return async(
WS.url("http://espnfc.com/rss/news?section=premierleague").setTimeout(1000).get().map(
... // same as previous
)
);
} catch (Exception e) {
// exception occured
return internalServerError("Oops, connect exception occured!");
}
}
私のインターネット接続は高速ではなく(ダウンロード速度は約40 KB / s)、例外処理コードを実行するために意図的にそれを実行します(要求タイムアウトを1秒に設定します)。
しかし、internalServerError
提供されたコードに応答するのではなく、フレームワークからデフォルトの応答を取得します。
Execution Exception
[TimeoutException: No response received after 1000]
上記のコードを使用してWSリクエストの例外をキャッチできない理由を誰かが説明できますか?Play!Framework WSライブラリを使用して例外を処理する最良の方法はどのようになっていますか?