首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

使用httpclient连接tomcat管理页有关问题,遇到过的请帮忙作答,多谢

2012-03-18 
使用httpclient连接tomcat管理页问题,遇到过的请帮忙作答,谢谢!用httpclient模拟实现用浏览器访问tomcat的

使用httpclient连接tomcat管理页问题,遇到过的请帮忙作答,谢谢!
用httpclient模拟实现用浏览器访问tomcat的管理页面,好像需要经过 HTTP Basic 认证。参考了http://www.ibm.com/developerworks/cn/java/j-lo-httpclient-j2ee/#N10060。但老是连接不成功。不是何原因?
代码如下:

Java code
import java.io.IOException;import org.apache.commons.httpclient.*;import org.apache.commons.httpclient.auth.AuthScope;import org.apache.commons.httpclient.methods.GetMethod;import org.apache.commons.httpclient.params.HttpMethodParams;import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.UsernamePasswordCredentials; public class GetSample {    public static void main(String[] args) {        //构造HttpClient的实例        HttpClient httpClient = new HttpClient();                httpClient.getState().setCredentials( new AuthScope("http://10.75.72.229", 8080, null), new UsernamePasswordCredentials("admin", "admin"));//10.75.72.229不是本机        //httpClient.getState().setCredentials( null ,"http://10.75.72.229:8080/manager/status" , new UsernamePasswordCredentials( "admin" , "admin" ) );        httpClient.getParams().setAuthenticationPreemptive(true);        //创建GET方法的实例        GetMethod getMethod = new GetMethod("http://10.75.72.229:8080/manager/status?XML=true");        getMethod.setDoAuthentication( true );        //使用系统提供的默认的恢复策略        getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());        try {            //执行getMethod            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();        }    }}

报错如下
2008-7-1 9:49:31 org.apache.commons.httpclient.HttpMethodDirector authenticateHost
警告: Required credentials not available for BASIC <any realm>@10.75.72.229:8080
2008-7-1 9:49:31 org.apache.commons.httpclient.HttpMethodDirector authenticateHost
警告: Preemptive authentication requested but no default credentials available
2008-7-1 9:49:31 org.apache.commons.httpclient.auth.AuthChallengeProcessor selectAuthScheme
信息: basic authentication scheme selected
2008-7-1 9:49:31 org.apache.commons.httpclient.HttpMethodDirector processWWWAuthChallenge
信息: Failure authenticating with BASIC 'Tomcat Manager Application'@10.75.72.229:8080
Method failed: HTTP/1.1 401 
2008-7-1 9:49:31 org.apache.commons.httpclient.HttpMethodBase getResponseBody
警告: Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements. See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License. You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,


  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<html>
 <head>
  <title>401 Unauthorized</title>
  <style>
  <!--
  BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;font-size:12px;}
  H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;}
  PRE, TT {border: 1px dotted #525D76}
  A {color : black;}A.name {color : black;}
  -->
  </style>
 </head>
 <body>
  <h1>401 Unauthorized</h1>
  <p>
  You are not authorized to view this page. If you have not changed
  any configuration files, please examine the file
  <tt>conf/tomcat-users.xml</tt> in your installation. That
  file will contain the credentials to let you use this webapp.
  </p>
  <p>
  You will need to add <tt>manager</tt> role to the config file listed above.
  For example:
<pre>
&lt;role rolename="manager"/&gt;
&lt;user username="tomcat" password="s3cret" roles="manager"/&gt;
</pre>
  </p>
  <p>
  For more information - please see the
  <a href="/docs/manager-howto.html">Manager App HOW-TO</a>.
  </p>
 </body>

</html>



[解决办法]
关注中

热点排行