如何使用泽西发送NTLM认证的post请求?

我正在使用Java对Sharepoint 2013进行restapi调用。 如何使用泽西rest客户端连接到sharepoint 2013?

注意:目前我使用的是apache http组件和NTCredentials

 Credentials credentials=new NTCredentials(username, password, workstation, domain); AuthScope authScope=new AuthScope(AuthScope.ANY); CredentialsProvider credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentials(authScope,credentials); CloseableHttpClient httpclient = HttpClients.custom().setDefaultCredentialsProvider(credsProvider).build(); 

如何将此采用到Jersey框架?

以下代码使用Jersey执行NTLM经过身份validation的HTTP GET请求:

 public Response executeRestGet(String user, String pass) { Client client = ClientBuilder.newClient(prepareClientConfig(user, pass)); WebTarget target = client.target("http://localhost/").path("site/_api/xxxxx"); return target.request(HTTP_ACCEPT_JSON).get(); } private ClientConfig prepareClientConfig(String user, String pass) { ClientConfig clientConfig = new ClientConfig(); CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); //make sure to supply all 4 arguments to the NTCredentials constructor credentialsProvider.setCredentials(AuthScope.ANY, new NTCredentials(user, pass, null, null)); clientConfig.property(ApacheClientProperties.CREDENTIALS_PROVIDER, credentialsProvider); clientConfig.connectorProvider(new ApacheConnectorProvider()); return clientConfig; } 

请注意,此方法需要: jersey-apache-connector 。 Maven依赖:

  org.glassfish.jersey.connectors jersey-apache-connector 2.22.2