2

我想使用 Spring Boot 和 Integration DSL 将消息作为 HTTP Post 发送到休息服务。有没有人有一个如何通过(基本)身份验证做到这一点的例子?

其他一切似乎都运行良好。日志显示“org.springframework.web.client.HttpClientErrorException: 401 Unauthorized”。

4

1 回答 1

1

Basic Auth实际上与Spring Integration 方面没有任何关系。

这是一个责任ClientHttpRequestFactory

例如,我曾经做过这样的事情:

    @Bean
    public ClientHttpRequestFactory clientHttpRequestFactory(@Value("username") String username, 
                                                             @Value("password") String password) {
        HttpClient httpClient = HttpClientBuilder.create().
                setDefaultCredentialsProvider(getCredentialsProvider(username, password))
                .build();
        HttpComponentsClientHttpRequestFactory clientHttpRequestFactory =
                new HttpComponentsClientHttpRequestFactory(httpClient);
        return clientHttpRequestFactory;
    }

    private CredentialsProvider getCredentialsProvider(final String username, final String password) {
        CredentialsProvider cp = new BasicCredentialsProvider();
        cp.setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT),
                new UsernamePasswordCredentials(username, password));
        return cp;
    }

clientHttpRequestFactory并将其注入Http.outboundGateway().requestFactory().

所有其他ClientHttpRequestFactory人可能有另一种方式来配置Basic Auth他们的请求对象。

于 2016-01-25T15:46:18.310 回答