Добавьте SoapHeader в org.springframework.ws.WebServiceMessage

Не забудьте обновить массив, который определяет numberOfRowsInSection. Он должен быть обновлен до того, как вы анимируете и удалите

. Мы проверяем, будет ли количество строк в секции равным 1, потому что нам нужно будет удалить весь раздел.

Поправьте меня, если кто-нибудь сможет сделайте этот ответ более ясным.

[self.tableView beginUpdates];
if ([tableView numberOfRowsInSection:indexPath.section] == 1) {

   [tableView deleteSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationFade];
} else {

   [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
}
[self.tableView endUpdates];
13
задан skaffman 16 February 2010 в 17:21
поделиться

2 ответа

По сути, вам нужно использовать WebServiceMessageCallback в вашем клиенте, чтобы изменить сообщение после его создания, но до его отправки. Остальная часть кода была довольно точно описана @skaffman, поэтому все может выглядеть так:

public void marshalWithSoapActionHeader(MyObject o) {

    webServiceTemplate.marshalSendAndReceive(o, new WebServiceMessageCallback() {

        public void doWithMessage(WebServiceMessage message) {
            try {
                SoapMessage soapMessage = (SoapMessage)message;
                SoapHeader header = soapMessage.getSoapHeader();
                StringSource headerSource = new StringSource("<credentials xmlns=\"http://example.com/auth\">\n +
                        <username>"+username+"</username>\n +
                        <password>"+password"+</password>\n +
                        </credentials>");
                Transformer transformer = TransformerFactory.newInstance().newTransformer();
                transformer.transform(headerSource, header.getResult());
            } catch (Exception e) {
                // exception handling
            }
        }
    });
}

Лично я считаю, что Spring-WS отстой для такой базовой потребности, они должны исправить SWS-479 .

31
ответ дан 1 December 2019 в 18:13
поделиться

Вам необходимо преобразовать WebServiceMessage в SoapMessage , в котором есть метод getSoapHeader () , который можно использовать для изменения заголовка. В свою очередь, SoapHeader имеет различные методы для добавления элементов, включая getResult () (который может использоваться как результат операции Transformer.transform () ). .

3
ответ дан 1 December 2019 в 18:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: