0

你应该如何使用 NT 身份验证Google Http Client

我可以找到大量关于 and 的信息,Apache HttpClient并且NTCredentials我可以正常工作,但在我试图在其上标准化新代码的 Google 客户端上却一无所获。

我已经做到了这一点:

final NTCredentials ntc = new NTCredentials(System.getProperty("user.name"), args[0], InetAddress.getLocalHost().getHostName(), "DOMAIN");
final BasicCredentialsProvider cp = new BasicCredentialsProvider();
cp.setCredentials(AuthScope.ANY, ntc);
final HttpClientBuilder hcb = HttpClientBuilder.create();
hcb.setDefaultCredentialsProvider(cp);
final HttpTransport ht = new ApacheHttpTransport(hcb.build());

我得到了这个例外:

Exception in thread "main" java.lang.UnsupportedOperationException
    at org.apache.http.impl.client.InternalHttpClient.getParams(InternalHttpClient.java:210)
    at com.google.api.client.http.apache.ApacheHttpTransport.<init>(ApacheHttpTransport.java:129)
    at GoogleHttpClientScratch.main(GoogleHttpClientScratch.java:36)

由以下原因引起org.apache.http.impl.client.InternalHttpClient.java

@Override
public HttpParams getParams() {
    throw new UnsupportedOperationException();
}
4

1 回答 1

0

ApacheHttpTransport 解决方案

我最终拉出了最新的dev分支并自己修补了有问题的ApacheHttpTransport构造函数

我还提交了一个拉取请求,将更改合并到主线项目中。

我实际上修补了版本1.20.0,因为这是我正在使用的版本,并且在我的本地 maven 存储库中重新编译和安装了这个模块。

我知道使用RequestConfig存在更好的解决方案,但这为我解决了问题并让我现在再次工作。

如果我重构整个类来使用RequestConfig,我也会更新我的 fork。我需要了解如何RequestConfig正确使用,这需要时间。

于 2015-11-19T02:55:12.687 回答