私のSAAJベースのクライアントは、次のXMLを生成し、それを.NETWebサービスに送信します。
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<AuthenticationHeader xmlns="http://www.w3.org/2001/XMLSchema-instance">
<Password xmlns="http://schemas.datacontract.org/2004/07/">temp123</Password>
<UserName xmlns="http://schemas.datacontract.org/2004/07/">temp321</UserName>
</AuthenticationHeader>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<GetTracks xmlns="http://tempuri.org/">
<TrackName>baby</TrackName><ArtistID>0</ArtistID><AlbumID>0</AlbumID><Start>0</Start><Count> 20</Count>
</GetTracks></SOAP-ENV:Body></SOAP-ENV:Envelope>
私が経験している問題は、AuthenticationHeader要素に対してプレフィックスを定義する必要があるが、それを最初に追加してはならないということです。これは、Webサービスからエラーが発生しないようにするために生成する必要があるものです。
<AuthenticationHeader xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
名前の作成中にプレフィックスを生成すると、xmlns属性の後、要素の最初に自動的に追加されます。
私はjavax.xml.soapパッケージ全体をいじくり回そうとしましたが、これを回避するのに役立つものを見つけることができませんでした。このようなxmlを生成するために進むべき方向についてのヒントを教えてください。
ちなみに、これはWebサービスがこのような有効なxmlを拒否するための有効な動作でさえあるのだろうか?そのような解釈行動の動機は何ですか?
ありがとうございました!