org.springframework.ws.soap.client.SoapFaultClientException:表示消息寻址属性的必需标头不存在

时间:2019-02-05 16:43:16

标签: java spring-boot soap soap-client

我正在尝试通过使用SOAP发送两个字符串“用户名”和“密码”来实现尝试登录的服务。该计划只是从提供程序获取HTTP OK响应。 wsdl的登录部分如下所示:

<message name="login">
  <part name="username" type="xsd:string"/>
  <part name="password" type="xsd:string"/>
</message>

我已经按照https://codenotfound.com/spring-ws-example.html所述设置了客户端。

所以我的配置如下:

@Configuration
public class AppConfig {

@Bean
public RestTemplate restTemplate() {
    return new RestTemplate();
}


@Bean
Jaxb2Marshaller jaxb2Marshaller() {
    Jaxb2Marshaller jaxb2Marshaller = new Jaxb2Marshaller();

    jaxb2Marshaller.setContextPath("http://example");

    return jaxb2Marshaller;
}

@Bean
public WebServiceTemplate webServiceTemplate() {
    WebServiceTemplate webServiceTemplate = new WebServiceTemplate();
    webServiceTemplate.setMarshaller(jaxb2Marshaller());
    webServiceTemplate.setUnmarshaller(jaxb2Marshaller());
    webServiceTemplate.setDefaultUri("http://example");

    return webServiceTemplate;
}
}

我尝试发送登录信息的方法如下:

@Autowired
private WebServiceTemplate webServiceTemplate;

@Override
public String login(String username, String password) throws Exception{     
    ObjectFactory factory = new ObjectFactory();
    StringArray login = factory.createStringArray();
    login.getItem().add(username);
    login.getItem().add(password);
    System.out.println("WebServiceTemplate is "+ webServiceTemplate);
    String response = (String)webServiceTemplate.marshalSendAndReceive(login);

    return response;
}

但是,我不断收到错误消息:

org.springframework.ws.soap.client.SoapFaultClientException: A required header representing a Message Addressing Property is not present

我对Spring Boot和SOAP还是很陌生,所以我有点迷失了。

0 个答案:

没有答案