0

我想在我的响应中添加一个自定义的隐式 soap 标头。

消息流

在此处输入图像描述

ESQL

CREATE FUNCTION Main() RETURNS BOOLEAN
    BEGIN
        SET OutputRoot.MQMD = InputRoot.MQMD;
        CREATE LASTCHILD OF OutputRoot DOMAIN 'SOAP' NAME 'SOAP';
        SET OutputRoot.SOAP.Header.eaie:apiHeader.messageId = UUIDASCHAR;
        SET OutputRoot.SOAP.Header.eaie:apiHeader.timestamp = CURRENT_TIMESTAMP;
        SET OutputRoot.SOAP.Header.eaie:apiHeader.transactionId = Environment.Variables.Generic.Session.TransactionId;
        SET OutputRoot.SOAP.Header.eaie:apiHeader.correlationId = Environment.Variables.Generic.Session.CorrelationId;
        SET OutputRoot.SOAP.Header.eaie:apiHeader.scrSystem = 'EAI';
        SET OutputRoot.XMLNSC = InputRoot.XMLNSC;
        RETURN TRUE;
    END;
END MODULE;

在 [Compute Node] 和 [SOAP Reply] 之间的断点中,消息中的 SOAP 填充了正确的参数,但作为响应,仍然只看到没有标头的肥皂体。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>

我错过了什么?

4

1 回答 1

1

我终于找到了一个解决方案,我没有创建 XMLNSC,也没有添加强制性的 SOAP Body。

最终代码

CREATE FUNCTION Main() RETURNS BOOLEAN
    BEGIN
        SET OutputRoot.MQMD = InputRoot.MQMD;
        CREATE LASTCHILD OF OutputRoot DOMAIN 'XMLNSC' NAME 'XMLNSC';
        SET OutputRoot.SOAP.Header.eaie:apiHeader.messageId = UUIDASCHAR;
        SET OutputRoot.SOAP.Header.eaie:apiHeader.timestamp = CURRENT_TIMESTAMP;
        SET OutputRoot.SOAP.Header.eaie:apiHeader.transactionId = Environment.Variables.Generic.Session.TransactionId;
        SET OutputRoot.SOAP.Header.eaie:apiHeader.correlationId = Environment.Variables.Generic.Session.CorrelationId;
        SET OutputRoot.SOAP.Header.eaie:apiHeader.scrSystem = 'EAI';
        SET OutputRoot.SOAP.Body.nsOut:getXXXResponse = InputRoot.XMLNSC.nsOut:getXXXResponse;
        SET OutputRoot.XMLNSC = InputRoot.XMLNSC;
        RETURN TRUE;
    END;
END MODULE;
于 2018-08-25T12:44:15.163 回答