日期:2014-05-18  浏览次数:20624 次

急啊!!!!各位大哥帮帮忙, HttpClient 自动登录https服务器问题!!!
https自动登陆,     取得了目的页面的url,     可是重定向的时候又回到了登录页面,     怎么办啊?????  

    我的代码如下:各位大哥帮我分析一下,   错哪了.

        package   com.venustech.utm30.mgrweb.action;

import   java.io.IOException;


import   javax.servlet.http.HttpServletRequest;
import   javax.servlet.http.HttpServletResponse;


import   org.apache.commons.httpclient.Cookie;
import   org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import   org.apache.commons.httpclient.Header;
import   org.apache.commons.httpclient.HttpClient;
import   org.apache.commons.httpclient.HttpException;
import   org.apache.commons.httpclient.HttpStatus;
import   org.apache.commons.httpclient.NameValuePair;
import   org.apache.commons.httpclient.methods.PostMethod;
import   org.apache.commons.httpclient.params.HttpMethodParams;
import   org.apache.commons.httpclient.protocol.Protocol;
import   org.apache.struts.action.Action;
import   org.apache.struts.action.ActionForm;
import   org.apache.struts.action.ActionForward;
import   org.apache.struts.action.ActionMapping;

import   com.venustech.utm30.mgrweb.utils.MySecureProtocolSocketFactory;


public   class   ProcessDataCenterAction   extends   Action   {

@Override
public   ActionForward   execute(ActionMapping   arg0,   ActionForm   arg1,
HttpServletRequest   arg2,   HttpServletResponse   response)
throws   Exception   {

HttpClient   httpClient   =   new   HttpClient();
String   logonSite   =   this.getLogonSite();
PostMethod   firstMethod   =   new   PostMethod(logonSite);
preparedInfos(httpClient,   firstMethod);
processLogon(httpClient,   firstMethod);

int   statuscode   =   firstMethod.getStatusCode();
String   newuri   =   " ";
if   ((statuscode   ==   HttpStatus.SC_MOVED_TEMPORARILY)
||   (statuscode   ==   HttpStatus.SC_MOVED_PERMANENTLY)
||   (statuscode   ==   HttpStatus.SC_SEE_OTHER)
||   (statuscode   ==   HttpStatus.SC_TEMPORARY_REDIRECT))   {

Header   redirect   =   firstMethod.getResponseHeader( "location ");

if   (redirect   !=   null)   {
newuri   =   redirect.getValue();
if   ((newuri   ==   null)   ||   (newuri.equals( " ")))
newuri   =   "/ ";
}

Header[]   headers   =   firstMethod.getResponseHeaders();
for   (int   index   =   0;   index   <   headers.length;   index++){
if(headers[index]   !=   null)
      response.addHeader(headers[index].getName(),   headers[index].getValue());

System.out.println( "headers:::: "   +   headers[index]);
}
}

Cookie[]   logoncookies   =   httpClient.getState().getCookies();
String   temp   =   "? ";
for   (int   index   =   0;   index   <   logoncookies.l