在 WSO2 Api 管理器(脚本中介)的 mc.setPayloadXML 内传递 CDATA 标签

Pass CDATA tag inside mc.setPayloadXML of WSO2 Api Manager (Script mediator)

描述: 我基本上是在 wso2 3.2 api 管理器消息调解中使用脚本调解器将 json 转换为 xml 并调用第三方 api。我面临的问题是第三方 api 在其正文请求中有一个 CDATA,所以我尝试使用脚本调解器生成 xml 请求,但我没有找到任何解决方案我该如何在脚本中介 mc.setPayloadXML 函数中传递 CDATA 标签。

Mediation.xml

    <sequence xmlns="http://ws.apache.org/ns/synapse" name="change_request_custom_js">
    <script language="js"><![CDATA[
    payload = mc.getPayloadJSON();
    var i;
    var start = '<![CDATA[';
    var end = "]]>";
    var response = <Identifiers/>;
    results = payload.identifiers;
    for (i = 0; i < results.length; ++i) {
        var elem = results[i];
        response.Identifiers += <Identifier>
            <IdNumber>{elem.identifierIdNumber}</IdNumber>
            <IdType>{elem.identifierIdType}</IdType>
        </Identifier>
    }
    mc.setPayloadXML(<soapenv:Envelope><soapenv:Body><tem:ExecuteXMLString tem="http://services.samples/xsd"> <tem:request>{start}<DCRequest xmlns="http://transunion.com/dc/extsvc"><Authentication type="OnDemand"><UserId>{payload.authenticationUserId}</UserId><Password>{payload.authenticationPassword}</Password></Authentication><RequestInfo><ExecutionMode>{payload.executionMode}</ExecutionMode><SolutionSetId>{payload.solutionSetId}</SolutionSetId><ExecuteLatestVersion>{payload.executeLatestVersion}</ExecuteLatestVersion></RequestInfo><Fields><Field key="Applicants"><Applicants><Applicant><ApplicantType>{payload.applicantType}</ApplicantType><ApplicantFirstName>{payload.applicantFirstName}</ApplicantFirstName><ApplicantMiddleName>{payload.applicantMiddleName}</ApplicantMiddleName><ApplicantLastName>{payload.applicantLastName}</ApplicantLastName><DateOfBirth>{payload.dateOfBirth}</DateOfBirth><Gender>{payload.gender}</Gender><EmailAddress/><CompanyName/>{response}<Telephones><Telephone><TelephoneExtension/><TelephoneNumber>{payload.telephoneNumber}</TelephoneNumber><TelephoneType>01</TelephoneType></Telephone></Telephones><Addresses><Address><AddressLine1>{payload.addressLine1}</AddressLine1><AddressLine2>{payload.addressLine2}</AddressLine2><AddressLine3/><AddressType>01</AddressType><City>{payload.city}</City><PinCode>{payload.pinCode}</PinCode><ResidenceType>01</ResidenceType><StateCode>{payload.stateCode}</StateCode></Address></Addresses><NomineeRelation/><NomineeName/><MemberRelationType4/><MemberRelationName4/><MemberRelationType3/><MemberRelationName3/><MemberRelationType2/><MemberRelationName2/><MemberRelationType1/><MemberRelationName1/><KeyPersonRelation/><KeyPersonName/><MemberOtherId3/><MemberOtherId3Type/><MemberOtherId2/><MemberOtherId2Type/><MemberOtherId1/><MemberOtherId1Type/><Accounts><Account><AccountNumber/></Account></Accounts></Applicant></Applicants></Field><Field key="ApplicationData"><ApplicationData><Purpose>02</Purpose><Amount>1000000</Amount><ScoreType>08</ScoreType><GSTStateCode>{payload.gstStateCode}</GSTStateCode><MemberCode>{payload.memberCode}</MemberCode><Password>{payload.password}</Password><CibilBureauFlag>False</CibilBureauFlag><DSTuNtcFlag>FALSE</DSTuNtcFlag><IDVerificationFlag>FALSE</IDVerificationFlag><MFIBureauFlag>FALSE</MFIBureauFlag><NTCProductType>AL</NTCProductType><ConsumerConsentForUIDAIAuthentication>Y</ConsumerConsentForUIDAIAuthentication><MFIEnquiryAmount>6458</MFIEnquiryAmount><MFILoanPurpose>40</MFILoanPurpose><MFICenterReferenceNo/><MFIBranchReferenceNo/><FormattedReport>False</FormattedReport></ApplicationData></Field></Fields></DCRequest>{end}</tem:request></tem:ExecuteXMLString></soapenv:Body></soapenv:Envelope>);
]]>
 </script>    
    <property name="messageType" value="text/xml" scope="axis2"/>
    <property name="ContentType" value="text/xml" scope="axis2"/>
    </sequence>

在上面的代码中,您可以看到我试图通过将 CDATA 标记放入变量开始和结束来传递它,但是在消息中介 wso2 api 管理器中上传 xml 时抛出了以下错误.

wso2carbon.log

TID: [-1234] [] [2021-03-18 12:18:40,565] ERROR {org.wso2.carbon.apimgt.impl.APIGatewayManager} - Error in deploying the sequence to gateway com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character ' ' (code 32) in content after '<' (malformed start element?).
 at [row,col {unknown-source}]: [16,20]
    at com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:647)
    at com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2845)
    at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1073)
    at org.apache.axiom.om.impl.SwitchingWrapper.next(SwitchingWrapper.java:1131)
    at javax.xml.stream.util.StreamReaderDelegate.next(StreamReaderDelegate.java:88)
    at org.apache.axiom.om.impl.serialize.StreamingOMSerializer.serializeNode(StreamingOMSerializer.java:146)
    at org.apache.axiom.om.impl.serialize.StreamingOMSerializer.serialize(StreamingOMSerializer.java:107)
    at org.apache.axiom.om.impl.serialize.StreamingOMSerializer.serialize(StreamingOMSerializer.java:76)
    at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeByPullStream(OMSerializerUtil.java:547)
    at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:882)
    at org.apache.axiom.om.impl.llom.OMSerializableImpl.serialize(OMSerializableImpl.java:125)
    at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:117)
    at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:159)
    at org.wso2.carbon.apimgt.impl.utils.APIUtil.convertOMtoString_aroundBody730(APIUtil.java:10592)
    at org.wso2.carbon.apimgt.impl.utils.APIUtil.convertOMtoString(APIUtil.java:10589)
    at org.wso2.carbon.apimgt.impl.APIGatewayManager.addSequence_aroundBody58(APIGatewayManager.java:1347)
    at org.wso2.carbon.apimgt.impl.APIGatewayManager.addSequence(APIGatewayManager.java:1335)
    at org.wso2.carbon.apimgt.impl.APIGatewayManager.setCustomSequencesToBeAdded_aroundBody56(APIGatewayManager.java:1315)
    at org.wso2.carbon.apimgt.impl.APIGatewayManager.setCustomSequencesToBeAdded(APIGatewayManager.java:1300)
    at org.wso2.carbon.apimgt.impl.APIGatewayManager.createAPIGatewayDTOtoPublishAPI_aroundBody6(APIGatewayManager.java:346)
    at org.wso2.carbon.apimgt.impl.APIGatewayManager.createAPIGatewayDTOtoPublishAPI(APIGatewayManager.java:274)
    at org.wso2.carbon.apimgt.impl.APIGatewayManager.publishAPIToGatewayEnvironment_aroundBody4(APIGatewayManager.java:207)
    at org.wso2.carbon.apimgt.impl.APIGatewayManager.publishAPIToGatewayEnvironment(APIGatewayManager.java:192)
    at org.wso2.carbon.apimgt.impl.APIGatewayManager.publishToGateway_aroundBody2(APIGatewayManager.java:144)
    at org.wso2.carbon.apimgt.impl.APIGatewayManager.publishToGateway(APIGatewayManager.java:118)
    at org.wso2.carbon.apimgt.impl.APIProviderImpl.publishToGateway_aroundBody116(APIProviderImpl.java:2438)
    at org.wso2.carbon.apimgt.impl.APIProviderImpl.publishToGateway(APIProviderImpl.java:2410)
    at org.wso2.carbon.apimgt.impl.APIProviderImpl.updateAPI_aroundBody80(APIProviderImpl.java:1502)
    at org.wso2.carbon.apimgt.impl.APIProviderImpl.updateAPI(APIProviderImpl.java:1315)
    at org.wso2.carbon.apimgt.impl.UserAwareAPIProvider.manageAPI_aroundBody12(UserAwareAPIProvider.java:137)
    at org.wso2.carbon.apimgt.impl.UserAwareAPIProvider.manageAPI(UserAwareAPIProvider.java:126)
    at org.wso2.carbon.apimgt.rest.api.publisher.v1.impl.ApisApiServiceImpl.apisApiIdPut(ApisApiServiceImpl.java:913)
    at org.wso2.carbon.apimgt.rest.api.publisher.v1.ApisApi.apisApiIdPut(ApisApi.java:690)
    at sun.reflect.GeneratedMethodAccessor793.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:179)
    at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96)
    at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:193)
    at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:103)
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor.run(ServiceInvokerInterceptor.java:59)
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:96)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
    at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
    at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:267)
    at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208)
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)
    at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:216)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:301)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPut(AbstractHTTPServlet.java:237)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:663)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:276)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    at org.wso2.carbon.identity.context.rewrite.valve.TenantContextRewriteValve.invoke(TenantContextRewriteValve.java:86)
    at org.wso2.carbon.identity.authz.valve.AuthorizationValve.invoke(AuthorizationValve.java:110)
    at org.wso2.carbon.identity.auth.valve.AuthenticationValve.invoke(AuthenticationValve.java:101)
    at org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:99)
    at org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:49)
    at org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:62)
    at org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:145)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
    at org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:57)
    at org.wso2.carbon.tomcat.ext.valves.RequestCorrelationIdValve.invoke(RequestCorrelationIdValve.java:119)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)

TID: [-1234] [api/am/publisher] [2021-03-18 12:18:40,592] ERROR {org.wso2.carbon.apimgt.impl.APIGatewayManager} - Error occurred deploying sequences on Production and Sandbox org.wso2.carbon.apimgt.api.APIManagementException: Error in deploying the sequence to gateway
    at org.wso2.carbon.apimgt.impl.APIGatewayManager.setCustomSequencesToBeAdded_aroundBody56(APIGatewayManager.java:1327)
    at org.wso2.carbon.apimgt.impl.APIGatewayManager.setCustomSequencesToBeAdded(APIGatewayManager.java:1300)
    at org.wso2.carbon.apimgt.impl.APIGatewayManager.createAPIGatewayDTOtoPublishAPI_aroundBody6(APIGatewayManager.java:346)
    at org.wso2.carbon.apimgt.impl.APIGatewayManager.createAPIGatewayDTOtoPublishAPI(APIGatewayManager.java:274)
    at org.wso2.carbon.apimgt.impl.APIGatewayManager.publishAPIToGatewayEnvironment_aroundBody4(APIGatewayManager.java:207)
    at org.wso2.carbon.apimgt.impl.APIGatewayManager.publishAPIToGatewayEnvironment(APIGatewayManager.java:192)
    at org.wso2.carbon.apimgt.impl.APIGatewayManager.publishToGateway_aroundBody2(APIGatewayManager.java:144)
    at org.wso2.carbon.apimgt.impl.APIGatewayManager.publishToGateway(APIGatewayManager.java:118)
    at org.wso2.carbon.apimgt.impl.APIProviderImpl.publishToGateway_aroundBody116(APIProviderImpl.java:2438)
    at org.wso2.carbon.apimgt.impl.APIProviderImpl.publishToGateway(APIProviderImpl.java:2410)
    at org.wso2.carbon.apimgt.impl.APIProviderImpl.updateAPI_aroundBody80(APIProviderImpl.java:1502)
    at org.wso2.carbon.apimgt.impl.APIProviderImpl.updateAPI(APIProviderImpl.java:1315)
    at org.wso2.carbon.apimgt.impl.UserAwareAPIProvider.manageAPI_aroundBody12(UserAwareAPIProvider.java:137)
    at org.wso2.carbon.apimgt.impl.UserAwareAPIProvider.manageAPI(UserAwareAPIProvider.java:126)
    at org.wso2.carbon.apimgt.rest.api.publisher.v1.impl.ApisApiServiceImpl.apisApiIdPut(ApisApiServiceImpl.java:913)
    at org.wso2.carbon.apimgt.rest.api.publisher.v1.ApisApi.apisApiIdPut(ApisApi.java:690)
    at sun.reflect.GeneratedMethodAccessor793.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:179)
    at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96)
    at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:193)
    at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:103)
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor.run(ServiceInvokerInterceptor.java:59)
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:96)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
    at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
    at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:267)
    at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208)
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)
    at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:216)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:301)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPut(AbstractHTTPServlet.java:237)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:663)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:276)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    at org.wso2.carbon.identity.context.rewrite.valve.TenantContextRewriteValve.invoke(TenantContextRewriteValve.java:86)
    at org.wso2.carbon.identity.authz.valve.AuthorizationValve.invoke(AuthorizationValve.java:110)
    at org.wso2.carbon.identity.auth.valve.AuthenticationValve.invoke(AuthenticationValve.java:101)
    at org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:99)
    at org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:49)
    at org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:62)
    at org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:145)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
    at org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:57)
    at org.wso2.carbon.tomcat.ext.valves.RequestCorrelationIdValve.invoke(RequestCorrelationIdValve.java:119)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)

TID: [-1234] [AuthenticationAdmin] [2021-03-18 12:18:40,702]  INFO {org.wso2.carbon.core.services.util.CarbonAuthenticationUtil} - 'admin@carbon.super [-1234]' logged in at [2021-03-18 12:18:40,701+0530]
TID: [-1234] [api/am/publisher] [2021-03-18 12:18:40,895] ERROR {org.wso2.carbon.apimgt.rest.api.publisher.v1.impl.ApisApiServiceImpl} - Error while updating API : cc61d349-94a4-4b12-b6e4-1b65b4e2214c org.wso2.carbon.apimgt.api.FaultGatewaysException
    at org.wso2.carbon.apimgt.impl.APIProviderImpl.updateAPI_aroundBody80(APIProviderImpl.java:1581)
    at org.wso2.carbon.apimgt.impl.APIProviderImpl.updateAPI(APIProviderImpl.java:1315)
    at org.wso2.carbon.apimgt.impl.UserAwareAPIProvider.manageAPI_aroundBody12(UserAwareAPIProvider.java:137)
    at org.wso2.carbon.apimgt.impl.UserAwareAPIProvider.manageAPI(UserAwareAPIProvider.java:126)
    at org.wso2.carbon.apimgt.rest.api.publisher.v1.impl.ApisApiServiceImpl.apisApiIdPut(ApisApiServiceImpl.java:913)
    at org.wso2.carbon.apimgt.rest.api.publisher.v1.ApisApi.apisApiIdPut(ApisApi.java:690)
    at sun.reflect.GeneratedMethodAccessor793.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:179)
    at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96)
    at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:193)
    at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:103)
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor.run(ServiceInvokerInterceptor.java:59)
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:96)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
    at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
    at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:267)
    at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208)
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)
    at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:216)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:301)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPut(AbstractHTTPServlet.java:237)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:663)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:276)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    at org.wso2.carbon.identity.context.rewrite.valve.TenantContextRewriteValve.invoke(TenantContextRewriteValve.java:86)
    at org.wso2.carbon.identity.authz.valve.AuthorizationValve.invoke(AuthorizationValve.java:110)
    at org.wso2.carbon.identity.auth.valve.AuthenticationValve.invoke(AuthenticationValve.java:101)
    at org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:99)
    at org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:49)
    at org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:62)
    at org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:145)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
    at org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:57)
    at org.wso2.carbon.tomcat.ext.valves.RequestCorrelationIdValve.invoke(RequestCorrelationIdValve.java:119)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)

试了很多方法,找了很多东西都没找到。请帮忙

你需要像这样转义方括号:

var end = "\]\]>";

并且在 mc.setPayloadXML 中你需要修正两件事:

  1. 添加 xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
  2. 缺少 xmlns:xmlns:tem="http://services.samples/xsd">

已编辑: 对我来说,在 EI 6.5.0 上工作,也应该与 API Manager 3.2.0 一起工作。 但是该解决方案需要额外的配置文件:/XMLInputFactory.properties 行:javax.xml.stream.isCoalescing=false。然后重新启动 WSO2 以加载该配置。

<sequence xmlns="http://ws.apache.org/ns/synapse" name="change_request_custom_js">    
<script language="js"><![CDATA[payload = mc.getPayloadJSON();
    var i;
var response = <Identifiers></Identifiers>;
results = payload.identifiers;
for (i = 0; i < results.length; ++i) {
    var elem = results[i];
    response.Identifiers += <Identifier>
        <IdNumber>{elem.identifierIdNumber}</IdNumber>
        <IdType>{elem.identifierIdType}</IdType>
    </Identifier>
}
var someXml = <DCRequest xmlns="http://transunion.com/dc/extsvc"><Authentication type="OnDemand"><UserId>{payload.authenticationUserId}</UserId><Password>{payload.authenticationPassword}</Password></Authentication><RequestInfo><ExecutionMode>{payload.executionMode}</ExecutionMode><SolutionSetId>{payload.solutionSetId}</SolutionSetId><ExecuteLatestVersion>{payload.executeLatestVersion}</ExecuteLatestVersion></RequestInfo><Fields><Field key="Applicants"><Applicants><Applicant><ApplicantType>{payload.applicantType}</ApplicantType><ApplicantFirstName>{payload.applicantFirstName}</ApplicantFirstName><ApplicantMiddleName>{payload.applicantMiddleName}</ApplicantMiddleName><ApplicantLastName>{payload.applicantLastName}</ApplicantLastName><DateOfBirth>{payload.dateOfBirth}</DateOfBirth><Gender>{payload.gender}</Gender><EmailAddress></EmailAddress><CompanyName></CompanyName>{response}<Telephones><Telephone><TelephoneExtension></TelephoneExtension><TelephoneNumber>{payload.telephoneNumber}</TelephoneNumber><TelephoneType>01</TelephoneType></Telephone></Telephones><Addresses><Address><AddressLine1>{payload.addressLine1}</AddressLine1><AddressLine2>{payload.addressLine2}</AddressLine2><AddressLine3></AddressLine3><AddressType>01</AddressType><City>{payload.city}</City><PinCode>{payload.pinCode}</PinCode><ResidenceType>01</ResidenceType><StateCode>{payload.stateCode}</StateCode></Address></Addresses><NomineeRelation></NomineeRelation><NomineeName></NomineeName><MemberRelationType4></MemberRelationType4><MemberRelationName4></MemberRelationName4><MemberRelationType3></MemberRelationType3><MemberRelationName3></MemberRelationName3><MemberRelationType2></MemberRelationType2><MemberRelationName2></MemberRelationName2><MemberRelationType1></MemberRelationType1><MemberRelationName1></MemberRelationName1><KeyPersonRelation></KeyPersonRelation><KeyPersonName></KeyPersonName><MemberOtherId3></MemberOtherId3><MemberOtherId3Type></MemberOtherId3Type><MemberOtherId2></MemberOtherId2><MemberOtherId2Type></MemberOtherId2Type><MemberOtherId1></MemberOtherId1><MemberOtherId1Type></MemberOtherId1Type><Accounts><Account><AccountNumber></AccountNumber></Account></Accounts></Applicant></Applicants></Field><Field key="ApplicationData"><ApplicationData><Purpose>02</Purpose><Amount>1000000</Amount><ScoreType>08</ScoreType><GSTStateCode>{payload.gstStateCode}</GSTStateCode><MemberCode>{payload.memberCode}</MemberCode><Password>{payload.password}</Password><CibilBureauFlag>False</CibilBureauFlag><DSTuNtcFlag>FALSE</DSTuNtcFlag><IDVerificationFlag>FALSE</IDVerificationFlag><MFIBureauFlag>FALSE</MFIBureauFlag><NTCProductType>AL</NTCProductType><ConsumerConsentForUIDAIAuthentication>Y</ConsumerConsentForUIDAIAuthentication><MFIEnquiryAmount>6458</MFIEnquiryAmount><MFILoanPurpose>40</MFILoanPurpose><MFICenterReferenceNo></MFICenterReferenceNo><MFIBranchReferenceNo></MFIBranchReferenceNo><FormattedReport>False</FormattedReport></ApplicationData></Field></Fields></DCRequest>;
mc.setProperty('someXml', someXml);
]]></script>

<payloadFactory media-type="xml">
      <format>
         <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
           <soapenv:Body>
              <tem:ExecuteXMLString xmlns:tem="http://services.samples/xsd"> 
                 <tem:request><![CDATA[]]></tem:request>
              </tem:ExecuteXMLString>
           </soapenv:Body>
         </soapenv:Envelope>
      </format>
      <args>
         <arg xmlns:ns="http://org.apache.synapse/xsd"
              evaluator="xml"
              expression="$ctx:someXml"/>
      </args>
   </payloadFactory>
   <property name="messageType" value="text/xml" scope="axis2"/>
   <property name="ContentType" value="text/xml" scope="axis2"/>
</sequence>

如果这不起作用,您可能需要尝试使用注册表的旧解决方案: