您的位置:首页 > 理论基础 > 计算机网络

今天用httpclient访问jenkins遇到请求被转发到登录页面,看了网上的一些教程也没能解决。后来参考了下官方文档解决了,代码如下

2016-07-05 16:53 731 查看
package com.bbtree.cicd.service;

import java.io.IOException;

import org.apache.commons.httpclient.Credentials;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.GetMethod;

public class HttpClinet {

public String get() throws HttpException, IOException{

//创建client对,相当于打开浏览器
HttpClient client = new HttpClient();

client.getParams().setAuthenticationPreemptive(true);

Credentials defaultcreds = new UsernamePasswordCredentials("guest", "");
client.getState().setCredentials(AuthScope.ANY, defaultcreds);
//相当于输入地址
//使用GET方法,如果服务器需要通过HTTPS链接,只需要将下面的URL中的http换成https
HttpMethod method = new GetMethod("http://cicd.bbtree.com/view/Java/api/json");
//使用post方法
//HttpMethod method = new PostMethod("http://java.sun.com");

//查询
int code = client.executeMethod(method);

String result = method.getResponseBodyAsString();

//释放资源
method.releaseConnect
905d
ion();
if(code!=200){
result=null;
}
return result;
}
}

主要是这两个语句,其中 Credentials defaultcreds = new UsernamePasswordCredentials("guest", "");是填写用户名和密码。

<span style="white-space:pre"> </span> client.getParams().setAuthenticationPreemptive(true);

Credentials defaultcreds = new UsernamePasswordCredentials("guest", "");
client.getState().setCredentials(AuthScope.ANY, defaultcreds);

附上官方文档地址:http://hc.apache.org/httpclient-3.x/authentication.html#Preemptive_Authentication

有兴趣的自行查阅
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: