使用 GoogleHttpClient 的 NT 身份验证
NT Authentication with GoogleHttpClient
您应该如何使用 Google Http Client
进行 NT 身份验证?
我可以找到很多关于 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();
}
ApacheHttpTransport 解决方案
我最终拉取了最近的 dev
分支和 patching up the offending ApacheHttpTransport
constructor myself。
我还提交了一个 pull request 将更改合并到主线项目中。
我实际上修补了版本 1.20.0
,因为那是我正在使用的版本,并且在我的本地 maven 存储库中重新编译和安装了这个模块。
我知道存在使用 RequestConfig
的更好解决方案,但这解决了我的问题并让我重新开始工作 现在。
如果我重构整个 class 以使用 RequestConfig
,我也会更新我的分叉。我需要了解如何正确使用 RequestConfig
,这需要时间。
您应该如何使用 Google Http Client
进行 NT 身份验证?
我可以找到很多关于 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();
}
ApacheHttpTransport 解决方案
我最终拉取了最近的 dev
分支和 patching up the offending ApacheHttpTransport
constructor myself。
我还提交了一个 pull request 将更改合并到主线项目中。
我实际上修补了版本 1.20.0
,因为那是我正在使用的版本,并且在我的本地 maven 存储库中重新编译和安装了这个模块。
我知道存在使用 RequestConfig
的更好解决方案,但这解决了我的问题并让我重新开始工作 现在。
如果我重构整个 class 以使用 RequestConfig
,我也会更新我的分叉。我需要了解如何正确使用 RequestConfig
,这需要时间。