2011-10-20 14 views
5

Utilizzando la gemma savon, ottengo la seguente richiesta XML:Savon rubino gemma aggiunge ins0 ai tag

<?xml version="1.0" encoding="UTF-8"?> 
    <soap:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:wsdl="URL" 
     xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
     xmlns:ins0="SOME URL"> 
     <soap:Body> 
      <ins0:Test xmlns="SOME URL"> 
      </ins0:Test> 
     </soap:Body> 
    </soap:Envelope> 

Ma ha bisogno di essere questo, invece:

<?xml version="1.0" encoding="UTF-8"?> 
    <soap:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:wsdl="URL" 
     xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
     <soap:Body> 
      <Test xmlns="SOME URL"> 
      </Test> 
     </soap:Body> 
    </soap:Envelope> 

Avviso ins0 è stato rimosso.

Qualche suggerimento?

+0

Vedere http://stackoverflow.com/questions/6720720/how-to-stop-savon-from-adding-prefixes-to-soap-body –

+0

Ho provato che ma ho ricevuto un errore: 'Il server non ha riconosciuto il valore di HTTP Header SOAPAction: test. Perché ha preso l'azione "Test" e lo ha reso minuscolo. –

+0

In realtà ho appena scoperto che questa differenza XML non infrange nulla, il codice funziona correttamente. Ma potrebbe spezzare il codice di qualcuno. –

risposta

2

I due documenti XML sono equivalenti, quindi non ci dovrebbero essere problemi a patto che il documento viene analizzato da un agente compatibile XML.

Il Savon generato documento è semplicemente la creazione di un prefisso namespace del ins0 per lo spazio dei nomi "ALCUNI URL". Questo è conveniente per un documento SOAP di grandi dimensioni con molti elementi di tale spazio dei nomi. In questo esempio, il prefisso non è realmente necessario.

L'unico problema potenziale che posso vedere è che il documento generato da Savion sembra dichiarare lo spazio dei nomi ins0 due volte: una volta nella soap: Envelope e poi di nuovo nel soap: Body. Sembra superfluo e potenzialmente aperto all'errore.

Problemi correlati