我正在尝试使用 NTLM 代理拨打球衣客户电话?这是可能的,因为我无法获得任何明确的信息。以前有人试过吗?
问问题
3319 次
1 回答
4
是的,可以将Jersey 客户端配置为通过需要 NTLM 身份验证的代理服务器进行连接。
这是一个简化的代码片段,它准备了一个适用ClientConfig
于 Jersey v2.5+ 的代码片段:
final ClientConfig config = new ClientConfig();
config.property(ClientProperties.PROXY_URI, "http://myproxy.com:8000");
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
final AuthScope ntlmAuthScope =
new AuthScope("myproxy.com", 8000, AuthScope.ANY_REALM, "NTLM");
credentialsProvider.setCredentials(
ntlmAuthScope,
new NTCredentials("user", "password", "hostname", "domain") );
config.property(
ApacheClientProperties.CREDENTIALS_PROVIDER, credentialsProvider);
config.connectorProvider(new ApacheConnectorProvider());
Client client = ClientBuilder.newClient(config);
请注意:我正在使用带有 Jersey 客户端的 Apache HttpClient 连接器 - 如果您使用另一个客户端传输连接器,您可能需要稍微不同的代码。
如果您希望缓冲(因此可重复)您的 POST/PUT 请求以响应从代理服务器返回的任何 407 身份验证挑战,您可能还需要在代码中添加以下行:
config.property(ClientProperties.REQUEST_ENTITY_PROCESSING,
RequestEntityProcessing.BUFFERED);
于 2014-03-14T17:17:25.050 回答