Создание веб-службы на основе SOAP с использованием учетных данных, предоставленных клиентом (HTML), с использованием весенней загрузки - PullRequest
0 голосов
/ 05 декабря 2018

Я создаю веб-приложение с использованием весенней загрузки.Приложение будет принимать учетные данные от клиента (Angular), а затем использовать эти учетные данные, чтобы сделать запрос на мыло, используя следующий код.Однако это не работает, потому что кажется, что вся работа, связанная с настройкой, выполняется сразу после запуска приложения.В то время учетные данные службы мыла равны нулю, поэтому Spring установил учетные данные в нуль в классе HttpComponentsMessageSender.Когда пользователь вошел в систему через учетные данные, он не использует эти учетные данные, а использует старые учетные данные.

Я выполняю вызов службы мыла со следующим кодом:

Вот код моего контроллера покоя,который вызывает мыльный клиент (в моем случае CustomerRequestClient):

public class CustomerRequestController {

private final CustomerRequestClient CRClient;

CustomerRequestController(CustomerRequestClient CRClient) {
    this.CRClient = CRClient;
}


@RequestMapping(method = RequestMethod.POST, value="/getAllCustomerRequests")
@ResponseBody
List<Object> registerStudent(@RequestBody Login user) {
    return CRClient.getAllCustomerRequests(user.getUserName(), user.getPassword());
}

Клиент, который делает мыльный вызов:

public class CustomerRequestClient extends WebServiceGatewaySupport {

private static final Logger log = LoggerFactory.getLogger(CustomerRequestClient.class);

public List<Object> getAllCustomerRequests(String userName, String password) {
    //Instantiate Request object
    FindAePReqEByDocument aePReq=  createAllRequest();

    //Soap Service call
    WebServiceTemplate template = getWebServiceTemplate();
    JAXBElement<AePReqEListType> response = (JAXBElement<AePReqEListType>) template.
            marshalSendAndReceive("http://localhost:8086/fmax/ws", aePReq);

    //Get AePReqEListType object from jaxb element 
    AePReqEListType r = (AePReqEListType)response.getValue();

    //Business logic come afterwards,,,,

}

private FindAePReqEByDocument createAllRequest() {
    FindAePReqEByDocument aePReq = new FindAePReqEByDocument();
    AePReqEType aePReqEType = new AePReqEType();
    aePReq.setAePReqE(aePReqEType);
    SortObjectListType s = new SortObjectListType();
    aePReq.setList(s);

    return aePReq;
}
}  

Класс конфигурациипохоже:

public class CustomerRequestConfig {
@Bean
public Jaxb2Marshaller marshaller() {
    Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
    marshaller.setContextPath("my.wsdl");
    return marshaller;
}

@Bean
public CustomerRequestClient customerRequestClient(Jaxb2Marshaller marshaller) {
    CustomerRequestClient client = new CustomerRequestClient();
    client.setDefaultUri(URI);
    client.setMessageSender(httpComponentsMessageSender(client));
    client.setMarshaller(marshaller);
    client.setUnmarshaller(marshaller);


    return client;
}

@Bean
public HttpComponentsMessageSender httpComponentsMessageSender(CustomerRequestClient client) {
    HttpComponentsMessageSender httpComponentsMessageSender = new HttpComponentsMessageSender();

    httpComponentsMessageSender.setCredentials(usernamePasswordCredentials(client));

    return httpComponentsMessageSender;
}

@Bean
public UsernamePasswordCredentials usernamePasswordCredentials(CustomerRequestClient client) {
    System.out.println("Password - " + client.getPassword());
    return new UsernamePasswordCredentials(client.getUserName(), client.getPassword());
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...