2

我想使用 Jetty 和 HttpClient 类从外部服务器获取内容。现在我想将获得的响应复制为HttpServletResponse并返回给客户端(浏览器)。我尝试了一些东西,但无法成功。我想我没有通过内部课程。

这是我的代码:

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为:

无法分配最终的局部变量 response,因为它是在封闭类型中定义的

如果我不使用final参数,也会出现错误,

不能在不同方法中定义的内部类中引用非最终变量响应

原因是什么?

4

2 回答 2

1

result.getResponse() 响应是一个 org.eclipse.jetty.client.HttpResponse,它在其沿袭中的任何地方都没有 HttpServletResponse。如果我按照您要执行的操作进行操作,您将需要复制您获得的 Result 中的信息并将其放入您的 HttpServletResponse 对象中。

于 2013-05-21T13:53:05.410 回答
0

您在参数中有一个final(!) 变量,您尝试在代码中更改它。这可能是错误的原因。

为什么呢final?删除此标识符并重试。

好的,我会尝试这样做。

如果你不使用response代码中的参数,如我所见,为什么不在内部类中将其声明为实例变量?

于 2013-05-21T13:32:05.163 回答