Pergunta

cliente baseado no SAAJ Meu gera o seguinte XML e envia para um serviço .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>

O problema que estou enfrentando é que para o elemento AuthenticationHeader I deve ter um prefixo definido, mas não deve ser anexado ao início. Este é exatamente o que eu preciso para se gerado a fim de não receber um erro do serviço de web:

<AuthenticationHeader xmlns:i="http://www.w3.org/2001/XMLSchema-instance">

Enquanto se eu gerar um prefixo durante a criação Nome, ele será automaticamente adicionado após o atributo xmlns e ao início do elemento.

Eu tentei bisbilhotar com todo o pacote javax.xml.soap, mas não foi capaz de encontrar qualquer coisa que poderia me ajudar a contornar esta situação. Você pode me dar uma dica sobre qual direção para ir, a fim de obter tal xml gerado?

Em uma nota lateral, eu me pergunto se isso é mesmo comportamento válido para um serviço web para rejeitar XML válido como este? Qual é a motivação para tal comportamento interpretação?

Obrigado!

Foi útil?

Solução

Java SABÃO APIs assumem geralmente o cumprimento de especificações do serviço de sua falando, e assim as coisas como controle de prefixo de grão fino não se expor através da API, uma vez que não deve haver nenhuma razão para cuidado.

Em casos anteriores como este, eu sempre tive que recorrer a construção Manual do objeto SABÃO DOM, que é terrivelmente doloroso.

Mais recentemente, eu tive razoavelmente boa sorte com a obtenção Primavera WebServices para produzir exatamente o que eu estou atrás. Ele abstrai a API SAAJ, enquanto continua a fornecer ganchos para descer e sujo com o DOM no nível XML. Sugiro dar-lhe uma tentativa e ver o que você pode vir acima com.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top