Я пытаюсь интегрировать приложение rails с Sql Server Reports Services (SSRS) с использованием Savon 2.11.1. Я использую WSDL ReportServicesExecution2005. Проблема заключается в том, что я должен добавить session_id в заголовок мыла после того, как клиент был создан. Это связано с тем, что session_id генерируется SSRS после того, как клиент делает вызов load_report.Savon 2.11.1 set soap header после создания экземпляра клиента Rails + SSRS
client = Savon.client(wsdl: "https://somewsdl.asmx?wsdl", basic_auth: ["user", "pass"])
этот вызов возвращает session_id в ответ:
response = client.call(:load_report, message: {report: "path/to/report"})
заголовок мыло должно содержать session_id в клиенте, когда этот вызов сделан:
client.call(:set_execution_parameters, message: { report: "path/to/report", parameters: params } )
попытался это, но это не помогло:
client.call(:set_execution_parameters, soap_header: {"session_id" => @session_id}, message: { report: "path/to/report", parameters: params } )
я получаю следующее сообщение об ошибке:
(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.
Спасибо за помощь аванса.
Я также хочу отметить, что «TrustedUserHeader» и все суб-теги должны были выполнять эту работу независимо от того, были ли они пустыми или нет. – user2967603