我的基于 SAAJ 的客户端生成以下 XML 并将其发送到 .NET Web 服务:
<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 的有效行为?这种解释行为的动机是什么?
谢谢!