本帖最后由 beefcattlexiaoyang 于 2013-11-04 10:00:23 编辑

解决方案 »

  1.   

    配置文件中需要配置。tomcat-users.xml
      

  2.   


    import java.io.IOException;import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
    import org.apache.commons.httpclient.HttpClient;
    import org.apache.commons.httpclient.HttpException;
    import org.apache.commons.httpclient.HttpStatus;
    import org.apache.commons.httpclient.UsernamePasswordCredentials;
    import org.apache.commons.httpclient.auth.AuthScope;
    import org.apache.commons.httpclient.methods.GetMethod;
    import org.apache.commons.httpclient.params.HttpMethodParams;public class AutoLoginTomcat { /**
     * @param args
     */
    public static void main(String[] args) {
    HttpClient httpClient = new HttpClient(); httpClient.getState().setCredentials(
    new AuthScope("127.0.0.1", 8080, null),
    new UsernamePasswordCredentials("admin", "admin"));
    httpClient.getParams().setAuthenticationPreemptive(true); GetMethod getMethod = new GetMethod(
    "http://127.0.0.1:8080/manager/status?XML=true");
    getMethod.setDoAuthentication(true);
    getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
    new DefaultHttpMethodRetryHandler());
    try {
    int statusCode = httpClient.executeMethod(getMethod);
    if (statusCode != HttpStatus.SC_OK) {
    System.err.println("Method failed: "
    + getMethod.getStatusLine());
    }
    byte[] responseBody = getMethod.getResponseBody();
    System.out.println(new String(responseBody));
    } catch (HttpException e) {
    System.out.println("Please check your provided http address!");
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    getMethod.releaseConnection();
    }
    }}
      

  3.   

    请求到了后续的xml页面
    打印:
    <?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="xform.xsl" ?><status><jvm><memory free='52663288' total='62980096' max='933953536'/></jvm><connector name='http-8080'><threadInfo  maxThreads="200" currentThreadCount="4" currentThreadsBusy="1" /><requestInfo  maxTime="96" processingTime="276" requestCount="26" errorCount="9" bytesReceived="0" bytesSent="102224" /><workers><worker  stage="R" requestProcessingTime="0" requestBytesSent="0" requestBytesRecieved="0" remoteAddr="&#63;" virtualHost="&#63;" method="&#63;" currentUri="&#63;" currentQueryString="&#63;" protocol="&#63;" /><worker  stage="R" requestProcessingTime="0" requestBytesSent="0" requestBytesRecieved="0" remoteAddr="&#63;" virtualHost="&#63;" method="&#63;" currentUri="&#63;" currentQueryString="&#63;" protocol="&#63;" /><worker  stage="S" requestProcessingTime="2" requestBytesSent="0" requestBytesReceived="0" remoteAddr="127.0.0.1" virtualHost="127.0.0.1" method="GET" currentUri="/manager/status" currentQueryString="XML=true" protocol="HTTP/1.1" /><worker  stage="R" requestProcessingTime="0" requestBytesSent="0" requestBytesRecieved="0" remoteAddr="&#63;" virtualHost="&#63;" method="&#63;" currentUri="&#63;" currentQueryString="&#63;" protocol="&#63;" /></workers></connector><connector name='ajp-8009'><threadInfo  maxThreads="200" currentThreadCount="0" currentThreadsBusy="0" /><requestInfo  maxTime="0" processingTime="0" requestCount="0" errorCount="0" bytesReceived="0" bytesSent="0" /><workers></workers></connector></status>
      

  4.   


    感谢!我试试,我查到一种Authentication认证机制,好像就是这个东西。解决了的话,我也准备把结果贴在这里。
      

  5.   


    亲,我还想问问,你用的jar包是那种jar包。我下载的httpClient和你的不一样啦?
      

  6.   


    亲,我还想问问,你用的jar包是那种jar包。我下载的httpClient和你的不一样啦?
    感谢!jar包找到了,现在httpclient已经独立出来了。在这个页面中,http://hc.apache.org/downloads.cgi找到
    Older releases
    Old releases are available from the archives.就是找到旧版本然后  commons-httpclient/ 然后 http://archive.apache.org/dist/httpcomponents/commons-httpclient/binary/下载jar包, 这个httpclient 还依赖另外两个jar吧。
    这个就应该很好找。