ReportExecutionService2005 soap4r SOAP :: FaultError: идентификатор сеанса отсутствует - PullRequest
0 голосов
/ 16 февраля 2011

Как мне установить идентификатор сеанса для связи с сервером?

@service = SOAP::WSDLDriverFactory.new(WSDL_URL).create_rpc_driver

@service.getExecutionInfo({})

SOAP :: FaultError: идентификатор сеанса отсутствует.Для этой операции требуется идентификатор сеанса.---> Идентификатор сеанса отсутствует.Для этой операции требуется идентификатор сеанса.из #

1 Ответ

1 голос
/ 17 мая 2011

Прежде всего я должен отметить, что я ничего не знаю о ruby-on-rails или soap4r, но у меня была похожая проблема с использованием веб-службы ReportExecutionService2005 из Java, поэтому я могу указать вам правильное направление.

Идентификатор сеанса генерируется после загрузки отчета, поэтому вам нужно вызвать метод 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>

Очевидно, ваш-исполнительный идентификатор будет заменен на возвращаемый из getExecution ID.

Как вы получите заголовок вЯ не могу помочь с ruby ​​и soap4r.

...