Jedox Integrator Server SOAP API via VB.NET

      Jedox Integrator Server SOAP API via VB.NET

      Hi,

      I try to migrate my VB.NET application vom Jedox 3.3 to Jedox 6.0 SR3. My application use the SOAP API of Jedox Integrator. As I read in knowledge base, since Jedox 6 an authentication is nessessary before I can execute a job.

      Source Code

      1. Dim _ETL As New IPaloETL.ETLServer
      2. Dim loginResult As IPaloETL.ResultDescriptor
      3. Dim session As String = ""
      4. 'Set WSDL URL
      5. _ETL.Url = "http://SERVERIP:7775/etlserver/services/ETL-Server?wsdl"
      6. 'Login
      7. loginResult = _ETL.login("admin", "admin", "")
      8. session = loginResult.result


      If I perform any function on ETL I get an error message "missing etlsession".

      In variable session I get a etlsession-ID. This ID should be used as soap header. But how I set this header? I couldn't find any function like in PHP sample (setSoapHeaders).

      Any ideas?

      Kind regards,
      Andreas
      Andreas Mueller
      FORECAST Unternehmensplanungen GmbH, Berlin, Germany
      www.forecast.de
      Hi,

      from the drillthrough svs script (which uses the soap etl webservice itself) :

      Source Code

      1. $header = new SoapHeader('http://ns.jedox.com/ETL-Server/', 'etlsession', $session);
      2. $server->__setSoapHeaders($header);
      laloune

      Post hoc, non est propter hoc
      Right, sorry.
      From yout quoted article:
      A SoapClient object is constructed from the WSDL description of a specific Jedox Integrator Server:

      $wsdl_url = 'http://127.0.0.1:7775/etlserver/services/ETL-Server?wsdl';
      $server = @new SoapClient($wsdl_url, array('exceptions' => true, 'location' => $wsdl_url));

      The $server resource then provides various methods to be executed on the Jedox Integrator Server.

      So the problem seems to be to construct a "Soap Client" Class with a method similar to setSoapHeaders? Have you tried something like the following approach?
      msdn.microsoft.com/en-us/libra…cs-lang=vb#code-snippet-2
      The WSDL provides a class ETLServer which inherits from System.Web.Services.Protocols.SoapHttpClientProtocol. I have written a class to represent a soap header which inherits from System.Web.Services.Protocols.SoapHeader. But I didn't see any function in ETLServer class to add my soap header to my object of ETLServer class.

      Source Code

      1. Imports System
      2. Imports System.Web.Services
      3. Imports System.Web.Services.Protocols
      4. Public Class ETL
      5. Private Class EtlSoapHeader
      6. Inherits SoapHeader
      7. Public etlsession As String
      8. End Class
      9. Public Function RunJob() As Integer
      10. Dim _ETL As New IEtlServer.ETLServer
      11. Dim loginResult As IEtlServer.ResultDescriptor
      12. Dim jobResult As IEtlServer.ExecutionDescriptor
      13. Dim jobID As Long
      14. Dim session As String = ""
      15. Dim header As New EtlSoapHeader
      16. Dim ETLParameterList(0) As IEtlServer.Variable
      17. Dim executionResult As IEtlServer.ExecutionDescriptor
      18. 'Login
      19. loginResult = _ETL.login("admin", "admin", "")
      20. session = loginResult.result
      21. 'Create soap header
      22. header.etlsession = session
      23. 'Add soap header
      24. 'How???
      25. 'somthing like _ETL.SetSoapHeader(header)
      26. 'Run job
      27. jobResult = _ETL.addExecution("ProjectName.jobs.JobName", ETLParameterList)
      28. jobID = jobResult.id
      29. executionResult = _ETL.runExecution(jobID)
      30. executionResult = _ETL.getExecutionStatus(jobID, True)
      31. Return executionResult.statusCode
      32. 'Logout
      33. loginResult = _ETL.logout(session)
      34. End Function
      35. End Class
      Andreas Mueller
      FORECAST Unternehmensplanungen GmbH, Berlin, Germany
      www.forecast.de