2017-04-11 9 views
2

Wie Präfix-Tag zu Seife mit KSOAP hinzufügen? Ich möchte hinzufügen: xmlns: CNX = "http://db.hutt.com"Hinzufügen von XML-Präfix zu Soap-Anfrage

<v:Envelope xmlns:cnx="http://db.hutt.com" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/"> 
     <v:Header> 
      <authentication xmlns:n0="http://db.hutt.com"> 
       <userName>tutt</userName> 
       <password>[email protected]</password> 
      </authentication> 
     </v:Header> 
     <v:Body> 
      <cnx:get_tt xmlns=""> 
       <ttid>1</ttid> 
      </cnx:get_tt> 
     </v:Body> 
    </v:Envelope> 
+0

Nach Ihrer Bearbeitung scheinen Ihre Anforderungen gleichwertig zu sein. Was würdest du gerne Ändern? – KarelHusa

+1

Das ttid-Element gehört vermutlich nicht zum Namensraum http://sdm.hott.com. Sie können das ttid-Element mit der Methode public soapObject addProperty (String-Namespace, String-Name, Objektwert) hinzufügen und den Namespace auf eine leere Zeichenfolge setzen. – KarelHusa

+0

@KarelHusa Ich habe die Frage bearbeitet. Ich kann sehen, dass Header nicht einige Tags haben sollte, während Anfrage in Körper das Tag haben sollte. – kinkajou

Antwort

0

Also, es ist egal, welche je Tag Sie haben beispielsweise: v: Umschlag oder soapenv: Umschlag. Der Soapserver wird es automatisch analysieren. Um das Präfix in xml envelope hinzuzufügen, müssen Sie auch die Klasse SoapSerializationEnvelope erweitern.

import org.ksoap2.SoapEnvelope; 
import org.ksoap2.serialization.SoapSerializationEnvelope; 
import org.xmlpull.v1.XmlSerializer; 

import java.io.IOException; 

/** 
* Created by suamatya on 4/11/2017. 
*/ 

public class CustomSoapSerializationEnvelope extends SoapSerializationEnvelope { 

    CustomSoapSerializationEnvelope(int version){ 
     super(version); 
    } 

    @Override 
    public void write(XmlSerializer writer) throws IOException { 
     writer.setPrefix("i", xsi); 
     writer.setPrefix("d", xsd); 
     writer.setPrefix("c", enc); 
     writer.setPrefix("v", env); 
     writer.setPrefix("db","http://db.hott.com"); 
     writer.startTag(env, "Envelope"); 
     writer.startTag(env, "Header"); 
     writeHeader(writer); 
     writer.endTag(env, "Header"); 
     writer.startTag(env, "Body"); 
     writeBody(writer); 
     writer.endTag(env, "Body"); 
     writer.endTag(env, "Envelope"); 
    } 
}