I want to use MS SOAP toolkit to generate Web services. I have VC++ DLL that I want to use to generate WSDL and WSML files using WSDL generator. Problem is that I want to use a document style Web service instead of default RPC style. I can change style attributes in generated WSDL file to document style. What other things will have to change?
What is the SOAP client code? If you have some code sample for a document style SOAP call, could you please send it to me?
As a general rule, I dissuade people from developing new Web services using the MS SOAP Toolkit. As the Microsoft site says, "The Microsoft SOAP Toolkit is deprecated by the .NET Framework. The toolkit provides basic Web services capabilities for COM components and applications. Support for the SOAP Toolkit has been extended from the originally posted July 1, 2004 deadline. Mainstream SOAP Toolkit support will now be retired in March 31, 2005 with Extended Support lasting until March 31, 2008."
Besides, MS SOAP Toolkit always generates RPC/encoded services. You must manually modify the generated WSDL to make it use Document/literal.
In your case I recommend that you use one of the various C++ SOAP toolkits, such as gSOAP (open source) or Systinet Server for C++ (free download).
But meanwhile, I will answer your question on how to convert an RPC/encoded WSDL to a document/literal WSDL. These guidelines will produce a service that conforms to the "wrapped" programming convention, which offers the best interoperability.
- Your input and output <wsdl:message> definitions must be changed as follows:
- Each <message> definition must contain only one <part> definition.
- Each <:part>: definition must reference an element definition rather than a type definition. (The individual parameter definitions move to the <types> section, as described in #2.)
- The name of the input and output <part> definitions should be "parameters".
- The element referenced by the input message should have the same name as the operation.
- If you don't have one already, create a <wsdl:types> section. You must define the elements referenced by your input and output messages. Each message element should be defined as a complexType, which is a sequence of elements, where each element represents the input/output parameters.
For code examples, see part 2.
Dig Deeper on Topics Archive
Related Q&A from Anne Thomas Manes
Anne Thomas Manes explains the differences between open source clients and open source implementations. Continue Reading
Anne Thomas Manes discusses the best way to go about creating an enterprise data dictionary and why the systems works well. Continue Reading
Anne Thomas Manes explains the difference between 'hard' real time and 'live' real time systems. Continue Reading