SOAP from scratch?
-
Hi all, I'm trying to build a SOAP message from scratch in C# for a webservice-consuming application. The WSDL provided for the service specifies using as a paramter to a particular method a class generated by the WSDL that includes roughly 70 different properties. When such a class is returned as the result of a method on this webservice, the proxy has no trouble moving the data from the SOAP message into this class, regardless of whether all 70 properties are present or not. Those missing fields are represented in the incoming message as self-closing tags. However, when the proxy generates a SOAP message *to* the webservice using this class, generating self-closing tags for empty fields, the webservice rejects the call. It's only when it's presented with non-empty tags--and at that, not all of the properties, if they contain a value, will be accepted--will it accept the message. About 6 months ago I figured out how to create the message from scratch in C#, using the HttpWebRequest/Response classes (I think so, anyway), but since then I've lost those code files and can't figure out how I did it. Does anybody have an example of how to do it? Or, even better, any suggestions about what I can do to force the proxy to ignore empty properties when creating the SOAP message?
-
Hi all, I'm trying to build a SOAP message from scratch in C# for a webservice-consuming application. The WSDL provided for the service specifies using as a paramter to a particular method a class generated by the WSDL that includes roughly 70 different properties. When such a class is returned as the result of a method on this webservice, the proxy has no trouble moving the data from the SOAP message into this class, regardless of whether all 70 properties are present or not. Those missing fields are represented in the incoming message as self-closing tags. However, when the proxy generates a SOAP message *to* the webservice using this class, generating self-closing tags for empty fields, the webservice rejects the call. It's only when it's presented with non-empty tags--and at that, not all of the properties, if they contain a value, will be accepted--will it accept the message. About 6 months ago I figured out how to create the message from scratch in C#, using the HttpWebRequest/Response classes (I think so, anyway), but since then I've lost those code files and can't figure out how I did it. Does anybody have an example of how to do it? Or, even better, any suggestions about what I can do to force the proxy to ignore empty properties when creating the SOAP message?
-
If all else fails you could of course just hand craft everything. So rather than trying to use the C# soap classes just use http or even TCP and just create exactly the SOAP that you need.
That's what I'm working on right now, actually. I suppose the most specific my question could be is this: Given a class with various members, how can I turn that into a SOAP message? For instance, if my class is wsRecord, and wsRecord has a String field called ID, a String field called Title, a DateTime field called RecordDate, and a String field called Comments, how do I put that into the message? None of the examples I've found online include any messages, only empty requests that return a response.
-
That's what I'm working on right now, actually. I suppose the most specific my question could be is this: Given a class with various members, how can I turn that into a SOAP message? For instance, if my class is wsRecord, and wsRecord has a String field called ID, a String field called Title, a DateTime field called RecordDate, and a String field called Comments, how do I put that into the message? None of the examples I've found online include any messages, only empty requests that return a response.
Easiest way I have found to do this. - Create something that you know works to the target system using the existing API libraries - Get it to work so it sends and receives. - Set up a packet capture tool - Run the message and capture the packets. - Use the packets to create your HTTP message.