使用httpclient连接tomcat管理页问题,遇到过的请帮忙作答,谢谢!
用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(); } }}
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>
[解决办法]
关注中