小编use*_*193的帖子

使用 Spring-WS 将基本授权 HTTP 标头添加到 SOAP 请求

我一直在尝试使用 Spring 应用程序使用 SOAP 服务,但我已经被完全卡住了一段时间。我希望解决方案将非常简单,并且希望能够指出正确的方向。

我能够通过 SoapUI 成功发出请求。我只需加载 .WSDL 文件,选择要使用的方法,并从 SoapUI 中的“Auth”菜单添加具有基本授权的用户名和密码。

在 Spring 应用程序中,我已经遇到了 401 错误,所以我相信它已经差不多了。我引用了下面这两个很好的示例,首先添加用户名和密码,然后记录 HTTP 标头以验证它们是否正确填充。

https://codenotfound.com/spring-ws-log-client-server-http-headers.html

使用 Spring-WS 客户端动态设置自定义 HTTP 标头

但是,设置“usernamePasswordCredentials”和设置连接的请求标头似乎都没有任何效果。我还通过测试 SoapUI 中记录的输出来确认 XML 正文是正确的。所以我认为这只是一个授权问题。

Bean/配置类:

@Bean
public Jaxb2Marshaller marshaller() {
    System.out.println("BEAN CREATED: MARSHALLER...");
    Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
    marshaller.setContextPath("..."); // omitted for example

    return marshaller;
}

@Bean
public UsernamePasswordCredentials usernamePasswordCredentials() {
    return new UsernamePasswordCredentials("testu", "test");
}

@Bean
@DependsOn({"usernamePasswordCredentials"})
public HttpComponentsMessageSender httpComponentsMessageSender(UsernamePasswordCredentials usernamePasswordCredentials) {
    HttpComponentsMessageSender httpComponentsMessageSender = new HttpComponentsMessageSender();
    
    httpComponentsMessageSender.setCredentials(usernamePasswordCredentials);

    return httpComponentsMessageSender;
}

@Bean
@DependsOn({"marshaller"}) …
Run Code Online (Sandbox Code Playgroud)

spring soap spring-ws spring-boot

3
推荐指数
1
解决办法
7332
查看次数

标签 统计

soap ×1

spring ×1

spring-boot ×1

spring-ws ×1