See inline. -----Original Message----- From: Dittmann Werner [mailto:[EMAIL PROTECTED]] Sent: Thursday, April 18, 2002 3:00 AM To: '[EMAIL PROTECTED]' Subject: AW: soap:header
Sylvain, sorry about the confusion. I was looking at the SOAP specs only. Now having a look at the WSDL specs I tried to match these two. Here what I found and think what it may be: 1st: the pure SOAP (1.2) does not provide a direct binding between header contents and body contents. Both parts of a SOAP message can be addressed to different entities, can processed independently, and there is no protocol element which relates them. If there shall be a relation between header and body elements that must be done by application specific elements and/or attributes. [sylvain] Sounds fine. 2nd: WSDL defining headers inside the operation part may be interpreted like: if this operation is called then the defined headers must be transmitted also. This is just my interpretation because the SOAP spec does not mandate this. Using the header definition inside the operation may be used to generate implemetation code on the server side, and/or code on the client side that checks if all "required" headers are set. [sylvain] Also, soap:header has an attribute called required. However, there should also be a way to set additional headers in the SOAP message that are not defined in WSDL but are necessary for other purposes, e.g. SOAP routing, transfer of service licensing data, etc. [sylvain] In my mind your WSDL should define all the service's header requirement because that is the only way that an external consumer of your service will know that a header is mandatory or not. This being said, if your service is internal, you can do: call.addHeader(new SOAPHeaderElement(...)) About overwriting received SOAP headers: you are right. There are different level of abstraction in .NET and the SOAP toolkit. I was looking from a pure SOAP point of view. Here the headers contained in a request are not related to headers contained in a response. Because of that I'm somewhat reluctant to automatically overwrite headers. [sylvain] Maybe those distinct headers should be different parts. This way the response one would not overwrite the request one. I've seen an example where the request contained some security info (name/password) in a header and the response contained also a header with security info (name/password) but both where different, i.e. first it was the requestors name/password and then it was the name/password of the responder (support of mutual authentication). They used the same header element name, encoding, etc. In this case overwriting complicates the whole matter. [sylvain] Anything makes you think that the header implementation of this service was well done? This message may contain privileged and/or confidential information. If you have received this e-mail in error or are not the intended recipient, you may not use, copy, disseminate or distribute it; do not open any attachments, delete it immediately from your system and notify the sender promptly by e-mail that you have done so. Thank you.