我基于SAAJ客户端生成以下XML并将其发送到.NET Web服务:操纵空间前缀在SAAJ /原始XML访问内SAAJ
<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的有效行为?这种解释行为的动机是什么?
谢谢!
.net Web服务,特别是早期的Web服务,在Java世界中因为不符合规范而臭名昭着,只在会话的两端都是.net时才工作。他们已经在这方面变得更好了,但仍然有很多旧的服务,如果前缀不符合预期,那些服务会让人不知所措。 – skaffman 2009-10-21 14:55:16