Ich versuche, meine Rails-App mit einem Sql Server Reports Services (SSRS) mit Savon 2.11.1 zu integrieren. Ich verwende die WSDL von ReportServicesExecution2005. Das Problem, das ich habe, ist, dass ich eine Session-ID dem Soap-Header hinzufügen muss, nachdem der Client instanziiert wurde. Dies liegt daran, dass die session_id von SSRS generiert wird, nachdem der Client einen Aufruf von load_report durchgeführt hat.Savon 2.11.1 Set Soap-Header nach Client instanziiert Rails + SSRS
client = Savon.client(wsdl: "https://somewsdl.asmx?wsdl", basic_auth: ["user", "pass"])
dieser Aufruf gibt die session_id in der Antwort:
response = client.call(:load_report, message: {report: "path/to/report"})
die Seife Kopf die session_id in dem Client enthalten muss, wenn dieser Anruf getätigt wird:
client.call(:set_execution_parameters, message: { report: "path/to/report", parameters: params } )
versucht, dies aber es hat nicht funktioniert:
client.call(:set_execution_parameters, soap_header: {"session_id" => @session_id}, message: { report: "path/to/report", parameters: params } )
bekomme ich folgende Fehlermeldung:
(soap:Client) The session identifier is missing. A session identifier is required for this operation. ---> Microsoft.ReportingServices.Diagnostics.Utilities.MissingSessionIdException: The session identifier is missing. A session identifier is required for this operation.
Danke für die Hilfe ein Fortschritt.
Ich möchte auch darauf hinweisen, dass die "TrustedUserHeader" und alle Unter-Tags erforderlich waren, um dies zu tun, unabhängig davon, ob sie leer waren oder nicht. – user2967603