ReportExecutionService2005 soap4r SOAP :: FaultError:会话标识符丢失
问题描述:
如何设置与服务器通信的会话标识符?ReportExecutionService2005 soap4r SOAP :: FaultError:会话标识符丢失
@service = SOAP::WSDLDriverFactory.new(WSDL_URL).create_rpc_driver
@service.getExecutionInfo({})
SOAP :: FaultError:会话标识符丢失。此操作需要会话标识符。 --->会话标识符丢失。此操作需要会话标识符。从#< SOAP ::映射::对象:0xb5bfef2c>
答
首先我需要说明的是,我不知道任何关于ruby-on-rails或soap4r,但我有一个类似的问题,使用ReportExecutionService2005 Web服务爪哇,所以我可以指出你在正确的方向。
会话标识符在您加载报告后生成,因此您需要调用Web服务的LoadReport方法,该方法返回一个ExecutionInfo对象,您可以在其上调用getExecutionID,从而为您提供所需的会话标识。
这个标识符需要进入SOAP报头中,用于该报告的所有后续请求(更改报告并且您需要更改标头中的标识符)。您的SOAP标头应该看起来像这样:
<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
<env:Header>
<ssrs:ExecutionHeader xmlns:ssrs='http://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices'>
<ssrs:ExecutionID>your-execution-id</SSRS:ExecutionID>
</ssrs:ExecutionHeader>
...
</env:Header>
...
</env:Envelope>
显然,您的执行id将被替换为getExecution ID的返回值。
如何在ruby和soap4r中获得标题并不是我能提供的帮助。