設定済みの Client は、別のコネクターをまだ使っている ClientResource には効果がありません。Restlet 2.4.4 の org.restlet.ext.httpclient ヘルパーでは、起動前にリソースをそのクライアントに接続します。

Client connector = new Client(new Context(), Protocol.HTTPS);
connector.getContext().getParameters().set("proxyHost", "proxy.example");
connector.getContext().getParameters().set("proxyPort", "8080");

ClientResource resource = new ClientResource(
    "https://service.example/status");
resource.setNext(connector);
connector.start();
try {
    String body = resource.get().getText();
} finally {
    resource.release();
    connector.stop();
}

setNext(connector) が接続点です。コンテキストはヘルパーの文書化された proxyHost と proxyPort キーを使い、ホスト名はスキームとポートから分離します。connector.start() の前に設定してください。公開 HTTP エンドポイントの場合、これら 2 つのフィールドは HTTP プロキシリストからアドレスとポートを取得します。

これは、デプロイされたヘルパーが前述の Apache 拡張であることを前提としています。JVM の http.proxyHost と http.proxyPort から既定値を取得することもできます。明示的なコンテキスト値により、このコネクターのエンドポイントが可視になります。

この例はテキスト本文を消費し、リソースを解放してコネクターを停止します。ストリーミングで使う場合も同様に、表現を消費または解放して、プールされた接続を解放できるようにする必要があります。

関連記事