1
0
-1

I'm using SOAP Tool to retrieve data from external system. And I test in SoapUI successfully. But failed in joget with log saying need 2 argument. Any expert here knows why?

 

code from SoapUI:

 

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:test="urn:com.domain.report/Test_Webservice_ByJohnny">
   <soapenv:Header/>
   <soapenv:Body>
      <test:Execute_Report>
         <!--Optional:-->
         <test:Report_Parameters/>
         <!--Optional:-->
         <test:Authentication>
            <!--Optional:-->
            <test:Proxy_User_Name>?</test:Proxy_User_Name>
         </test:Authentication>
      </test:Execute_Report>
   </soapenv:Body>
</soapenv:Envelope>

    CommentAdd your comment...

    5 answers

    1.  
      1
      0
      -1

      Hi,

      Yes, you are right that the SOAP Tool currently does not support WSSE security. 

      The username and password in configuration is used for basic http authentication. 

      The plugin also does not support optional parameter in Parameters option and it does not support custom namespace in "SOAP Body (XML)".

      We will take note on this in our future product road map. 

      If there's an urgent requirement for this then you can develop a custom plugin to handle it Extending Functionality - Developing Plugins.

      Best regards.

        CommentAdd your comment...
      1.  
        1
        0
        -1

        Here‘s the SOAP request from SoapUI.

        Could it be because Soap Tool doesn't support WSSE security?

        Thanks.

         

        <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:test="urn:com.domain.report/Test_Webservice_ByJohnny">
           <soapenv:Header>
         <wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
          <wsse:UsernameToken wsu:Id="UsernameToken-5AB13C692A71BD503714591550146072">
           <wsse:Username>xxxx</wsse:Username>
           <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">xxxxx</wsse:Password>
           <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">CFG2ufO+44DASgm+hldqDw==</wsse:Nonce>
           <wsu:Created>2016-03-28T08:50:14.607Z</wsu:Created>
          </wsse:UsernameToken>
         </wsse:Security>
           </soapenv:Header>
           <soapenv:Body>
              <test:Execute_Report>
                 <!--Optional:-->
                 <test:Report_Parameters/>
                 <!--Optional:-->
                 <test:Authentication>
                    <!--Optional:-->
                    <test:Proxy_User_Name>?</test:Proxy_User_Name>
                 </test:Authentication>
              </test:Execute_Report>
           </soapenv:Body>
        </soapenv:Envelope>

          CommentAdd your comment...
        1.  
          1
          0
          -1

          emm.. look like the plugin can't handle optional parameter. maybe u can try using "SOAP Body (XML)" option to construct the request body instead using "Parameters"?

          1. johnny

            Thanks for your advice. Tried and failed with below message. INFO 28 Mar 2016 15:08:16 org.joget.plugin.enterprise.SoapTool - {"Fault":{"SOAP-ENV":"http://schemas.xmlsoap.org/soap/envelope/","faultcode":"SOAP-ENV:Client.validationError","faultstring":"Invalid request","wd":"urn:com.workday/bsvc"}} SOAP body: <test:Execute_Report> <!--Optional:--> <test:Report_Parameters/> <!--Optional:--> <test:Authentication> <!--Optional:--> <test:Proxy_User_Name>?</test:Proxy_User_Name> </test:Authentication> </test:Execute_Report>

          CommentAdd your comment...
        2.  
          1
          0
          -1
          attach the properties of soapUI request.
            CommentAdd your comment...
          1.  
            1
            0
            -1

            may be u can enable the debug mode of the soap tool and paste the output here?

            1. johnny

              Hi ERROR 28 Mar 2016 11:01:07 SoapTool - java.lang.RuntimeException: Need 2 arguments!!! java.lang.RuntimeException: Need 2 arguments!!! at org.joget.plugin.enterprise.SoapTool.dynamicInvoke_aroundBody26(SoapTool.java:434) at org.joget.plugin.enterprise.SoapTool.dynamicInvoke_aroundBody27$advice(SoapTool.java:94) at org.joget.plugin.enterprise.SoapTool.dynamicInvoke(SoapTool.java:1) at org.joget.plugin.enterprise.SoapTool.call_aroundBody24(SoapTool.java:317) at org.joget.plugin.enterprise.SoapTool.call_aroundBody25$advice(SoapTool.java:94) at org.joget.plugin.enterprise.SoapTool.call(SoapTool.java:1) at org.joget.plugin.enterprise.SoapTool.execute_aroundBody12(SoapTool.java:131) at org.joget.plugin.enterprise.SoapTool.execute_aroundBody13$advice(SoapTool.java:94) at org.joget.plugin.enterprise.SoapTool.execute(SoapTool.java:1) at org.joget.apps.app.service.AppWorkflowHelper.executeTool(AppWorkflowHelper.java:102) at org.joget.workflow.shark.WorkflowToolActivityHandler.executeActivity(WorkflowToolActivityHandler.java:64) at org.enhydra.shark.WfActivityImpl.runTool(WfActivityImpl.java:1487) at org.enhydra.shark.WfActivityImpl.startActivity(WfActivityImpl.java:1419) at org.enhydra.shark.WfActivityImpl.activate(WfActivityImpl.java:261) at org.enhydra.shark.WfProcessImpl.startActivity(WfProcessImpl.java:918) at org.enhydra.shark.WfProcessImpl.run(WfProcessImpl.java:742) at org.enhydra.shark.WfProcessImpl.start(WfProcessImpl.java:422) at org.enhydra.shark.WfProcessWrapper.start(WfProcessWrapper.java:289) at org.joget.workflow.model.service.WorkflowManagerImpl.processStart(WorkflowManagerImpl.java:3133) at sun.reflect.GeneratedMethodAccessor388.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.joget.apps.app.service.AuditTrailInterceptor.invoke(AuditTrailInterceptor.java:17) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.joget.apps.app.service.SqlFilterAspect.invoke(SqlFilterAspect.java:36) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) at com.sun.proxy.$Proxy24.processStart(Unknown Source) at org.joget.apps.app.controller.AppWebController.clientProcessStart(AppWebController.java:196) at sun.reflect.GeneratedMethodAccessor386.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:177) at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:446) at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:434) at org.joget.commons.spring.web.ParameterizedAnnotationMethodHandlerAdapter.handle(ParameterizedAnnotationMethodHandlerAdapter.java:32) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868) at javax.servlet.http.HttpServlet.service(HttpServlet.java:644) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.owasp.csrfguard.CsrfGuardFilter.doFilter(CsrfGuardFilter.java:88) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:316) at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126) at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:122) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:48) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:205) at org.joget.apps.workflow.security.WorkflowHttpAuthProcessingFilter.doFilter(WorkflowHttpAuthProcessingFilter.java:84) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:158) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:205) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:120) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:53) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:91) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:213) at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:176) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261) at org.joget.commons.spring.web.CustomDelegatingFilterProxy.doFilter(CustomDelegatingFilterProxy.java:30) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:516) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1086) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:659) at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1558) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1515) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source)

            2. krishna teja

              Any update on this...im facing the same issue unable to fetch required field from external and showcase that in a form field.


              Is this even possible


            CommentAdd your comment...