Java credentialsprovider+closeablehttpclient请求digest auth认证接口

【背景】后台需请求一个digest auth认证的接口

postman请求示例

【依赖】pom.xml

		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpclient</artifactId>
			<version>4.5.13</version>
		</dependency>

【代码】代码展示

String URLPRE = "***";
String USERNAME = "***";
String PASSWARD = "***";
private final CredentialsProvider credsProvider = new BasicCredentialsProvider();
private CloseableHttpClient httpClient = null;

private void init(){
	credsProvider.setCredentials(
                new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT),
                new UsernamePasswordCredentials(USERNAME, PASSWORD));
    // 创建HttpClient实例并设置CredentialsProvider
    httpClient = HttpClients.custom()
                .setDefaultCredentialsProvider(credsProvider)
                .build();
}
public ArrayList<String> getData() throws Exception{
	ArrayList<String> repoResult = new ArrayList<>();
	String link = URLPRE+"***";
	init();
	// 创建HttpClient实例并设置CredentialsProvider
	try{
		HttpGet request = new HttpGet(link);
		try (CloseableHttpResponse response = httpClient.execute(request)) {
			// 获取响应状态码
			int statusCode = response.getStatusLine().getStatusCode();
			if(statusCode!=200){
				throw new RuntimeException("请求数据状态码为:"+statusCode);
			}
			// 获取响应实体
			HttpEntity entity = response.getEntity();
			if (entity != null) {
				// 将响应内容转换为json
                String result = EntityUtils.toString(entity);
                ObjectMapper objectMapper = new ObjectMapper();
                JsonNode jsonNode = objectMapper.readTree(result);
                jsonNode.fields().forEachRemaining(entry->{
                    repoResult.add(entry.getKey());
                });
                logger.info("list:{}",repoResult);
            }
        }
   } catch (IOException e) {
        throw new RuntimeException("请求数据异常");
   }
   return repoResult;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值