Hi, I am trying to create a C# client for consuming the NBR Storage service and downloading webex recordings from the storage server.
I tried to add the wsdl as a service reference in Visual Studio and Visual Studio reports the following error :
Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.XmlSerializerMessageContractImporter
Error: Schema with target namespace 'NBRStorageService' could not be found.
We have 2 elements - DataHandler and Document that the WSDL says are part of tns1 which has URI NBRStorageService.
So its not able to find the schema of NBRStorageService where these elements are defined.
I got around that by locally modifying the WSDL and removing the operations that I do not need(operations like getNBRStorageFile) and defining DataHandler as a string just to get by.
When I try to get the storage access ticket using the generated client, I get null as a response.
This is the code snippet:
NbrStorageReference.NBRStorageServiceClient client = new NbrStorageReference.NBRStorageServiceClient();
string accessTicket = client.getStorageAccessTicket(siteID, siteAdminUser, siteAdminPassword);
The accessTicket after the call is always null.
It would be really helpful is these 2 questions are answered :
1) I would like to know the right way to deal with the invalid WSDL
2) How to solve the null response issue and once that is done, how to download the recordings using the downloadNBRStorageFile as DataHandler is not a type in C#
Unfortunately, the engineering team has decided it cannot update the WSDL to be properly imported in .Net, as changing the WSDL may affect other existing working projects. I would suggest hard coding your SOAP requests, aside from the obvious variables. For your null response, are you getting an HTTP status code at all? Is your parser just failing or is the HTTP response empty?
Thank you for your quick response.
After changing the WSDL to remove all the parsing errors, I could successfully send the SOAP request for access ticket.
Using fiddler I see that the service is correctly responding back with an access ticket, but the string returned from the C# service proxy stub is null.
On a side note, since the WSDL has DataHandler which is Axis specific, will it work in any language apart from Java?
Also I noticed that the WSDL is RPC encoded, which has limited to no support from any of the modern WSDL parsers.
Do you have any suggestions on the best language/framework to consume this service?
WebEx generally does use Java, but you are free to use anything you are comfortable with. Again, I suggest just hardcoding the requests except for the obvious variable portions. The only commands that are generally used are GetMeetingXml (session chat/qa/etc transcript), getStorageAccessTicket, and downloadNBRStorageFile.
Oh Ok. Thank you