Вызов веб-сервиса soap в гибридном приложении mobilefirst

Я пытаюсь вызвать веб-службу SOAP в гибридном приложении. Как мне правильно сформировать SOAP-сообщение, если серверная служба отображает следующую ошибку в журнале:

Причина: com.ibm.websphere.security.WSSecurityException: Exception org.apache.axis2.AxisFault: CWWSS7509W: полученное сообщение с запросом SOAP отклонено, поскольку в нем неправильно указано действие SOAP и действие WS-Addressing, хотя есть хотя бы одно Вложение PolicySet на уровне операций службы TestServiceService.TestServicePort. произошло во время выполнения действия: com.ibm.ws.wssecurity.handler.WSSecurityConsumerHandler$1@9b5addf6 в com.ibm.ws.security.context.ContextImpl.runWith(ContextImpl.java:394) в com.ibm.ws.wssecurity.platform .websphere.auth.WSSContextImpl.runWith(WSSContextImpl.java:65) ... еще 35

Это содержимое файла js в адаптере

function getToken(){
var token = WL.Server.getActiveUser().attributes.LtpaToken;
var fulltoken = "LtpaToken2=" + token;

return fulltoken;
    }

function callService(){
WL.Logger.warn("INSIDE callService "+getToken());
var path="checkauth/TestServiceService";
    var request= 
        <soapenv:Envelope 
        xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
        xmlns:q0="http://provider.ws/" 
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
  <q0:callService /> 
  </soapenv:Body>
  </soapenv:Envelope>;
  var input = {
            method : 'post',
            returnedContentType : 'xml',
            path : path,
            body: {
                content: request.toString(),
                contentType: 'text/xml; charset=utf-8',
                },
             headers: {"Cookie": getToken()}
        };

        var result= WL.Server.invokeHttp(input);
        return result;
    }

Это конверт SOAP, который отображался через монитор TCP/IP:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
<s:Security xmlns:s="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:w2="http://www.ibm.com/websphere/appserver/tokentype" soapenv:mustUnderstand="1">
    <u:Timestamp>
    <u:Created>2015-08-10T13:18:56.644Z</u:Created>
    </u:Timestamp>
    <s:BinarySecurityToken ValueType="w2:LTPAv2" u:Id="ltpa_20">dt8G5gZ9PpZ/Ea5oXr6EQd8dpmfXKiqeXiShPlpSWntK59hUzyoDNX9TKq1nFLfxUEJyJdjMxoG7EVxw8Q1zhyZdYhTXnsMkNVqScvSsPpX7ln/ad+/WAHqaaFymD8XtVEsjOlezQDarPaUmnKAQRUSrLkRnL5B1MoCclTe129Oojg8o+hACgDKjuvPnvL8jaf45wNiou6Il5ZOayBcoHpNehI7i2hADa4fTKzX/T69OPnsZOyWYrNosdezNd24b61vs85k2YK26rLTp5dkEp8f3mwKZBwOOK4z1wQdiAXJf6kQvzR22SfFitbJA5MStlBcovHAvB5T+J5Ip80/kI5BPa2ogoufd9HZAdKTNII8cHpHBN2Ub/+atzg1L7EhIWuzO1BPI62KoU/hPqAHn3uGCGrbIILesKx0TPvlgmU4Bg54H9prC0I8hgXbO1HLuz4M5DNE5ASFbH0W3LJ/UU7BGXJs6iJmfAfJtQ+ip5ZFHlLItZA+ca2LkVWmyD/xKVxyxHE1uDz8zV/CfV9Km0T+8FTA0Cfi/PIb5KiAagdrmqtw6GuJDbSCsC3sdh21G/cA3Y0p/f+rhDw8m/e17y1cEuq9HOBharwn7ET3wO30V4D4rGoLhd4QsN6X1z89gZmZVaI6J9urpPAEiSndmyQ==</s:BinarySecurityToken>
</s:Security>
    <wsa:To>http://X.X.X.X:9082/checkauth/TestServiceService</wsa:To>
    <wsa:MessageID>urn:uuid:5d1f8656-5550-40d2-9f39-c58f57279489</wsa:MessageID>
    <wsa:Action>http://provider.ws/TestServiceDelegate/callServiceRequest</wsa:Action>
</soapenv:Header>
<soapenv:Body>
    <ns2:callService xmlns:ns2="http://provider.ws/"/>
</soapenv:Body></soapenv:Envelope>

person Madiyor    schedule 10.08.2015    source источник


Ответы (1)


body состоит из одной строки, и это делает сценарий своеобразным, а также вызывает вопрос, должно ли это вообще работать.

Могу предложить две вещи:

  1. Вы можете попытаться проанализировать файл WSDL с помощью приложения SOAPUI; он должен показать вам, как должен выглядеть конверт SOAP

  2. Используйте функцию обнаружения служб в MobileFirst Studio, которая может создать для вас адаптер с готовым конвертом SOAP. Подробнее об использовании этой функции читайте здесь: http://www-01.ibm.com/support/knowledgecenter/SSHS8R_7.0.0/com.ibm.worklight.dev.doc/dev/c_using_service_discovery_wizard_to_explore_backend-services.html

person Idan Adar    schedule 10.08.2015
comment
Я пытался использовать обе ваши рекомендации @Idan, в каждом случае отображалось одно и то же сообщение журнала, которое я вставил выше. Монитор TCP/IP показывает следующий мыльный конверт, который мне нужно сформировать. Я добавил его в свой первый пост. Можете ли вы порекомендовать, что я могу сделать, чтобы вызвать защищенный веб-сервис мыла. Я ничего не нашел о том, как вызвать защищенный мыльный веб-сервис в mobilefirst - person Madiyor; 12.08.2015