HttpClient 4重定向处理Tomcat内部的不同

时间:2013-12-10 17:07:38

标签: java tomcat6 apache-httpclient-4.x

我有一个获取远程资源的HttpClient实例。我将其配置为处理重定向。

        HttpParams params = new BasicHttpParams();
        params.setIntParameter(CoreConnectionPNames.SO_TIMEOUT,
            SOCKET_TIMEOUT);
        params.setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,
                CONNECTION_TIMEOUT);
        params.setLongParameter(ClientPNames.CONN_MANAGER_TIMEOUT,
                CONN_MANAGER_TIMEOUT_VALUE);
        params.setParameter(ClientPNames.COOKIE_POLICY,
                CookiePolicy.BROWSER_COMPATIBILITY);

        params.setBooleanParameter(ClientPNames.HANDLE_REDIRECTS, true);
        params.setBooleanParameter(ClientPNames.REJECT_RELATIVE_REDIRECT,
                false);
        params.setIntParameter(ClientPNames.MAX_REDIRECTS, 4);
        httpclient = new DefaultHttpClient(cm, params);

当我从webapp(Tomcat6)中调用它时,我得到了301响应。当我从JSE环境调用它时,我得到200个最终响应(重定向得到处理)。我的第一个疑问是类加载问题,但是打印出HttpClient类的源代码表明它是从httpclient-4.2.5.jar加载的两次

我有什么想法可以调试这个吗?

2 个答案:

答案 0 :(得分:1)

运行HttpClient并打开上下文/有线日志记录,如here所述,并比较两种环境中交换的HTTP消息。

答案 1 :(得分:0)

HttpClient实例在整个webapp中共享,包括SolrJ(Solr客户端),它将“follow redirect”参数设置为false。我通过使用额外的日志记录行创建RequestDirector的副本来解决这个问题。我本可以简单地查找HttpClient.getParams()的所有电话。你知道的越多。

相关问题