httpclient 账号密码 验证

本文介绍如何使用Java中的HttpClient进行HTTP请求,并设置了代理服务器及HTTP头部信息。通过示例代码展示了如何配置代理、设置认证信息及HTTP头,如User-Agent。

主要是设置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); 

### 如何在HTTP请求中设置基本认证的用户名和密码 为了在 HTTP 请求中设置基本认证(Basic Authentication),通常会将用户名和密码编码成 Base64 字符串,并将其放置于请求头部中的 `Authorization` 字段下。具体实现方法取决于所使用的编程语言及其库。 #### 使用 Python 的 Requests 库 Python 中最常用的 HTTP 客户端之一是 `requests` 库,它简化了发送带有身份验证信息的 GET 或 POST 请求的过程: ```python import requests from requests.auth import HTTPBasicAuth response = requests.get('https://example.com', auth=HTTPBasicAuth('username', 'password')) print(response.status_code) ``` 此代码片段展示了如何利用内置的身份验证机制来执行一个简单的 GET 请求[^1]。 #### Java HttpClient 设置 Basic 认证 对于 Java 开发者来说,在较新的版本里可以直接使用标准库里的 `HttpClient` 来完成同样的操作: ```java String username = "yourUsername"; String password = "yourPassword"; // 创建并配置客户端 var client = HttpClient.newHttpClient(); // 构建 URL 和请求体 URI uri = URI.create("https://api.example.com/"); HttpRequest request = HttpRequest.newBuilder() .uri(uri) .header("Authorization", "Basic " + java.util.Base64.getEncoder().encodeToString((username + ":" + password).getBytes())) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode()); ``` 这段代码说明了怎样创建具有基础认证功能的 HTTP 请求对象以及发送该请求的方式[^2]。 #### Apache HttpComponents 实现 Basic Auth 当涉及到更复杂的场景时,比如处理 HTTPS 连接或者自定义 SSL 上下文,则可能需要用到像 Apache HttpComponents 这样的高级工具集: ```java CredentialsProvider credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentials( new AuthScope(AuthScope.ANY), new UsernamePasswordCredentials("username", "password")); CloseableHttpClient httpClient = HttpClients.custom() .setDefaultCredentialsProvider(credsProvider) .build(); HttpGet httpGet = new HttpGet("https://targetwebsite.com"); try (CloseableHttpResponse response = httpClient.execute(httpGet)) { System.out.println(response.getStatusLine().getStatusCode()); } ``` 上述示例来自官方文档的例子,演示了通过提供凭证供应器给 HttpClient 来自动管理认证过程的方法[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值