In our current proyect, we have a Report Server where we host all the reports that feed from our Data Warehouse (SQL Server). But recently we were asked to include a report that feeds from a web service (to show live information from the main system rather than backed up information from the DWH). The webservice is hosted in the main server (AIX) and we have no control over it. We were given a WSDL from wich I was able to parse an XML query (using SoapUI
). To be able to query the webservice I need to pass in parameters in the soap body (as is expected) but I also need to pass in values for authentication in the soap header.
This is the soap request I need to translate:
<soapenv:Envelope xmlns:soapenv="Namespace" xmlns:aut="Namespace" xmlns:con="Namespace">
I understand that I can add an XML DataSource to my report in SSRS, and then a DataSet with a query written in XML Data Provider Query Language. This seems simple enough and a pretty clean solution but I've searched for a whole day now and I just can't find a single example on how to provide values for the soap header in an XMLDP query. What tag do I need to use?
<Method Namespace="namespace" Name="consultaMovimientosCuenta">
I think if I could manage to do this it would be the best solution for my problem, but since we're a bit short on time, I tried an alternative: create a webservice (.net) that consumes the other
web service in the main system (and pass on the neccessary parameters and authentication values), and then have my report consume the new
webservice. The problem is, I need to be able to host this service on the SSRS Report Server.
My questions are:
- Is my first approach (XMLDP query) the best way to go? (I surely think so) If so, how? Or is it impossible to pass on soap header parameters through an XMLDP query?
I found some examples that assumed I had created the webservice, or that I consumed it in a console/windows application. I should state that I'm not using any code here (some examples managed to do it in C#) but just pure XMLDP queries in a report (.rdl) editted in Report Builder 3.0
- If I decide to go with the second approach, (which is working) is it possible (and I'm not sure I really know what I'm talking abount here) to use the Report Server Web Service to host my newly created webservice? Is there a different way to host the service in the Report Server? My boss doesn't want to raise an IIS server just for this single web service, and has asked me to research on any possibilities of using the RS that's allready installed instead.