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

apinglee 2008-07-01 09:59:22
用httpclient模拟实现用浏览器访问tomcat的管理页面,好像需要经过 HTTP Basic 认证。参考了http://www.ibm.com/developerworks/cn/java/j-lo-httpclient-j2ee/#N10060。但老是连接不成功。不是何原因?
代码如下:

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>
<role rolename="manager"/>
<user username="tomcat" password="s3cret" roles="manager"/>
</pre>
</p>
<p>
For more information - please see the
<a href="/docs/manager-howto.html">Manager App HOW-TO</a>.
</p>
</body>

</html>

...全文
1661 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
nanatintin 2012-02-20
  • 打赏
  • 举报
回复
请问楼主如何解决这个问题的?
ivan_fang 2010-07-21
  • 打赏
  • 举报
回复
我也要看!!!
Mervyn 莫文 2008-10-07
  • 打赏
  • 举报
回复
HAHAHAHHAHAHHAHAHHAHA
apinglee 2008-07-01
  • 打赏
  • 举报
回复
搞定
new AuthScope("10.75.72.229", 8080, null),
OK
hjb719 2008-07-01
  • 打赏
  • 举报
回复
关注中

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧