2

Jetty と HttpClient クラスを使用して、外部サーバーからコンテンツを取得したいと考えています。HttpServletResponse取得したレスポンスを as としてコピーし、クライアント (ブラウザ) に返したいと思います。私は何かを試みましたが、成功することはできません。私は内部クラスを乗り越えていないと思います。

これが私のコードです:

public void getContentsTo(String uri,HttpServletRequest request,final HttpServletResponse response){
        HttpClient httpClient=new HttpClient();
        httpClient.newRequest(uri).send( new org.eclipse.jetty.client.api.Response.CompleteListener() {
            @Override
            public void onComplete(Result result) {
                response=(HttpServletResponse)result.getResponse();
            };
        });

エラーは次のように割り当てresponseています。

エンクロージング型で定義されているため、最終的なローカル変数の応答を割り当てることができません

パラメータに使用finalしないと、次のようなエラーもあります。

別のメソッドで定義された内部クラス内の非最終変数応答を参照することはできません

原因は何ですか?

4

2 に答える 2

1

result.getResponse() 応答は、系統のどこにも HttpServletResponse を持たない org.eclipse.jetty.client.HttpResponse です。あなたがやろうとしていることに従うなら、取得した Result の情報をコピーして HttpServletResponse オブジェクトに入れる必要があります。

于 2013-05-21T13:53:05.410 に答える
0

paramsにfinal(!) 変数があり、コードでそれを変更しようとしています。それがエラーの原因である可能性があります。

なぜfinalですか?この識別子を削除して、再試行してください。

わかりました、私はそのようにしようとします。

コードでパラメーターを使用しない場合はresponse、ご覧のとおり、内部クラス内でインスタンス変数として宣言してみませんか?

于 2013-05-21T13:32:05.163 に答える