gpt4 book ai didi

android - 多身份验证方法 Apache http 客户端 4.3+

转载 作者:行者123 更新时间:2023-11-29 01:43:21 27 4
gpt4 key购买 nike

我有几台具有不同身份验证类型的服务器。基本,NTLM。我需要自动选择它的机制。我认为这是尝试使用每种凭证类型,然后选择成功的。我在 http 客户端 4.3 中找到了一些方法,名为 impl.client.HttpClientBuilder#setDefaultAuthSchemeRegistry,但是

  1. 我不知道如何使用它。
  2. 第二个问题,我如何控制身份验证方法的优先级。因为我想确定我应该为 url 使用哪种方法,然后想从上次请求成功的方法开始。

PS 目前我对每种类型的身份验证都有可行的实现。

最佳答案

可以使用 RequestConfig 在每个请求的基础上配置首选身份验证方案

RequestConfig requestConfig =  RequestConfig.custom()
.setTargetPreferredAuthSchemes(Arrays.asList(AuthSchemes.BASIC))
.setProxyPreferredAuthSchemes(Arrays.asList(AuthSchemes.NTLM, AuthSchemes.DIGEST))
.build();

本地执行上下文包含与请求执行有关的所有详细信息,包括目标和代理主机的身份验证状态

CloseableHttpClient httpclient = HttpClients.createDefault();
try {
HttpClientContext localContext = HttpClientContext.create();
HttpGet httpget = new HttpGet("http://localhost/");
CloseableHttpResponse response = httpclient.execute(httpget, localContext);
try {
System.out.println(response.getStatusLine());
EntityUtils.consume(response.getEntity());
AuthState targetAuthState = localContext.getTargetAuthState();
if (targetAuthState.getAuthScheme() != null) {
System.out.println("Target auth scheme: " +
targetAuthState.getAuthScheme().getSchemeName());
}
AuthState proxyAuthState = localContext.getProxyAuthState();
if (proxyAuthState.getAuthScheme() != null) {
System.out.println("Proxy auth scheme: " +
proxyAuthState.getAuthScheme().getSchemeName());
}

} finally {
response.close();
}
} finally {
httpclient.close();
}

关于android - 多身份验证方法 Apache http 客户端 4.3+,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22987696/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com