Java 一次性基本身份验证

Java 一次性基本身份验证,java,spring,spring-boot,resttemplate,Java,Spring,Spring Boot,Resttemplate,我开发了一个spring启动应用程序。当我需要执行REST请求(POST、PUT…)时,我每次都使用这样的基本身份验证 HttpEntity<PostJql> httpEntity = new HttpEntity<PostJql>(post, jiraUtils.getHeader()); ResponseEntity<IssueDataWrapper> response = restTemplate.exchange(urlJiraResp

我开发了一个spring启动应用程序。当我需要执行REST请求(POST、PUT…)时,我每次都使用这样的基本身份验证

HttpEntity<PostJql> httpEntity = new HttpEntity<PostJql>(post, jiraUtils.getHeader());
        ResponseEntity<IssueDataWrapper> response = restTemplate.exchange(urlJiraResponse, HttpMethod.POST, httpEntity, IssueDataWrapper.class);
HttpEntity-HttpEntity=newhttpentity(post,jiraUtils.getHeader());
ResponseEntity response=restemplate.exchange(urlJiraResponse、HttpMethod.POST、httpEntity、IssueDataWrapper.class);
有没有其他方法可以在应用程序中执行一次基本身份验证,然后在没有基本身份验证的情况下使用RestTemplate或httpPost{Put/Delete…}


向您问好是的。使用满足您需要的
clienthtprequestfactory
配置您的
restemplate

您可以在构造函数中设置它:

  restTemplate = new RestTemplate(requestFactory);
。。。或者你可以把所有这些东西都做成豆子,然后让弹簧把它们连接起来

您可以扩展
SimpleClientHttpRequestFactory
,覆盖
createRequest()

。。。或者,您可以将Apache HttpComponents作为依赖项引入,并使用
HttpComponents客户端HttpRequestFactory
,然后配置底层Apache
HttpClient
,以执行所需的身份验证。Apache,但为了让您开始:

    BasicCredentialsProvider credentialsProvider = 
         new BasicCredentialsProvider();

    credentialsProvider.setCredentials(AuthScope.ANY, 
        new UsernamePasswordCredentials("user", "password"));

    HttpClient client = HttpClientBuilder.create()
        .setDefaultCredentialsProvider(credentialsProvider)
        .build();

    RestTemplate restTemplate = new RestTemplate(
        new HttpComponentsClientHttpRequestFactory(client));

根据我的经验,如果可以的话,引入ApacheHttpComponents是值得的——它比默认情况下使用的基于
HttpUrlConnection
的HTTP客户端更加可靠和可配置。当您的需求扩展到其他身份验证方法、超时、重试策略等方面时,您会很高兴有一个
HttpClient
要配置。

是。使用满足您需要的
clienthtprequestfactory
配置您的
restemplate

您可以在构造函数中设置它:

  restTemplate = new RestTemplate(requestFactory);
。。。或者你可以把所有这些东西都做成豆子,然后让弹簧把它们连接起来

您可以扩展
SimpleClientHttpRequestFactory
,覆盖
createRequest()

。。。或者,您可以将Apache HttpComponents作为依赖项引入,并使用
HttpComponents客户端HttpRequestFactory
,然后配置底层Apache
HttpClient
,以执行所需的身份验证。Apache,但为了让您开始:

    BasicCredentialsProvider credentialsProvider = 
         new BasicCredentialsProvider();

    credentialsProvider.setCredentials(AuthScope.ANY, 
        new UsernamePasswordCredentials("user", "password"));

    HttpClient client = HttpClientBuilder.create()
        .setDefaultCredentialsProvider(credentialsProvider)
        .build();

    RestTemplate restTemplate = new RestTemplate(
        new HttpComponentsClientHttpRequestFactory(client));
根据我的经验,如果可以的话,引入ApacheHttpComponents是值得的——它比默认情况下使用的基于
HttpUrlConnection
的HTTP客户端更加可靠和可配置。当您的需求扩展到其他身份验证方法、超时、重试策略等方面时,您会很高兴有一个
HttpClient
来配置