我有这个代码

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/

10-10 22:18