Мой SAAJ-клиент генерирует следующий XML и отправляет его на .NET веб-службы:Манипулирование префиксы пространств имен в 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 элемент должен иметь префикс, но он не должен быть добавлен с самого начала. Это именно то, что мне нужно, чтобы получить сгенерированные для того, чтобы не получить ошибку из веб-службы:
<AuthenticationHeader xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
Хотя, если я генерировать префикс при создании имен, он автоматически добавляется после того, как атрибут XMLNS и на очень начало элемента.
Я попытался со всей галочкой со всем пакетом javax.xml.soap, но не смог найти ничего, что могло бы помочь мне обойти это. Можете ли вы дать мне подсказку о том, в каком направлении идти, чтобы получить такой XML-файл?
На стороне примечания, интересно, действительно ли это действительное поведение для веб-службы, чтобы отклонить правильный xml? Какова мотивация такого поведения интерпретации?
Спасибо!
.net веб-сервисы, особенно ранние, известны в мире java, поскольку они не соответствуют спецификации и работают только в том случае, когда оба конца разговора являются .net. Они стали намного лучше в этом, но Есть еще много старых услуг, которые делают такие вещи, как урод, если префиксы не так, как ожидалось. – skaffman