当前位置: 代码迷 >> 综合 >> httpclient 账号密码 验证
  详细解决方案

httpclient 账号密码 验证

热度:75   发布时间:2024-01-10 11:01:36.0

主要是设置http头
在HostConfiguration.setProxy里设置。如下面代码:
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 
 
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; 
import org.apache.commons.httpclient.Header; 
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 HttpClientUse { 
 
    public static void main(String[] args) throws HttpException, IOException { 
        HttpClient httpClient = new HttpClient(); 
 
        httpClient.getHostConfiguration().setProxy("localhost", 808); 
 
        /*//需要验证 
        UsernamePasswordCredentials creds = new UsernamePasswordCredentials("chenlb", "123456"); 

        httpClient.getState().setProxyCredentials(AuthScope.ANY, creds); 
        */ 
 
        //设置http头 
        List <Header> headers = new ArrayList <Header>(); 
        headers.add(new Header("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)")); 
        httpClient.getHostConfiguration().getParams().setParameter("http.default-headers", headers); 
 
        GetMethod method = new GetMethod("http://www.baidu.com"); 
        method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, 
                new DefaultHttpMethodRetryHandler(3, false)); 
        try { 
            int statusCode = httpClient.executeMethod(method); 
 
            if (statusCode != HttpStatus.SC_OK) { 
                System.out.println("Method failed code="+statusCode+": " + method.getStatusLine()); 
 
            } else { 
                System.out.println(new String(method.getResponseBody(), "gb2312")); 
            } 
        } finally { 
            method.releaseConnection(); 
        } 
    } 

如果要用户名与密码验证的,请把/* */注释去掉。使验证有效。

验证,关键是:

UsernamePasswordCredentials creds = new UsernamePasswordCredentials("chenlb", "123456"); 
 
httpClient.getState().setProxyCredentials(AuthScope.ANY, creds); 
设置http请求头.

List <Header> headers = new ArrayList <Header>(); 
headers.add(new Header("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)")); 
httpClient.getHostConfiguration().getParams().setParameter("http.default-headers", headers); 

  相关解决方案