java - 如何在 HttpClient 上注册 AuthSchemes

标签 java

我有这个代码

DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.getAuthSchemes().register("ntlm",new NTLMSchemeFactory());

但是 eclipse 说 DefaultHttpClient 已被弃用,我将其替换为

HttpClient client = HttpClientBuilder.create().build();

但是现在我没有名为 getAuthSchemes() 的 API。那么现在有了这个新类,我该如何注册身份验证方案?

我也找到了

ArrayList<String> authPrefs = new ArrayList<String>(2);
authPrefs.add(AuthSchemes.KERBEROS);
client.getParams().setParameter(AuthPNames.PROXY_AUTH_PREF, authPrefs);

但这里也弃用了 getParams 和 AuthPNames。

那么设置身份验证方案的非弃用方式是什么。

最佳答案

配置不再在客户端中完成,而是在请求中完成,在您拥有 HttpPost(或 HttpGet 或其他)之后和调用 execute( ) 这样做:

HttpPost post = new HttpPost(...);

ArrayList<String> authPrefs = new ArrayList<String>();
authPrefs.add(AuthSchemes.NTLM);
authPrefs.add(AuthSchemes.KERBEROS);

// ...

RequestConfig config = RequestConfig.custom()
        .setProxyPreferredAuthSchemes(authPrefs).build();
post.setConfig(config);

// ....

client.execute(post);

关于java - 如何在 HttpClient 上注册 AuthSchemes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22676765/

相关文章:

java - 该程序打印所有团队的名称,而不仅仅是破坏规则的人

Java 8 流和并行流

java - Jersey 过期 header 不起作用

java - 尝试执行 Blob 存储并将表单数据添加到数据存储 预检错误

java - Gearman - 计算统计数据

java - Spring Data Jpa - 缓存

java - 如何在doINBackground android中设置textview

java - 在 Java 中创建和访问数组数据

java - 从 Activity 外部使用自定义对话框

java - Kafka Consumer不消费java中的所有记录