我有这个代码
DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.getAuthSchemes().register("ntlm",new NTLMSchemeFactory());
但是 eclipse 说 DefaultHttpClient 已被弃用,我将其替换为
HttpClient client = HttpClientBuilder.create().build();
但是现在我没有名为 getAuthSchemes() 的 API。那么现在有了这个新类(class),我该如何注册认证方案?
我也发现
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/