Android ksoap2 отправить конверт с пустым телом? - PullRequest
1 голос
/ 19 августа 2011

Я хочу отправить конверт с пустым телом, например:

     <v:Envelope 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 />
        <v:Body>
        </v:Body>
     </v:Envelope>

Возможно и как? Я пробовал с этим:

     HttpsTransportSE transport = new HttpsTransportSE(HOST, PORT, ENDPOINT, TIMEOUT);
     SoapObject request = new SoapObject(null, null);
     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);    
     envelope.setOutputSoapObject(request);
     transport.call(SOAP_ACTION, envelope);

Кажется, я не могу понять, как это сделать, может кто-нибудь помочь?

Ответы [ 2 ]

1 голос
/ 24 августа 2011

Я исправил проблему, создав собственный SoapSerializationEnvelope, расширяющий исходный и перезаписывающий метод writeBody следующим образом: открытый класс MySoapEnvelope расширяет SoapSerializationEnvelope

{   
    public MySoapEnvelope(int version) {
        super(version);
    }
    @Override
    public void writeBody(XmlSerializer writer) throws IOException
    {
        if (bodyOut!=null){
        super.writeBody(writer);
        }   
    }
}

Чтобы использовать его, вам просто нужно использовать MySoapSerializationEnvelope и установить envelope.bodyOut = null;

HttpsTransportSE transport = new HttpsTransportSE(host, port, endpoint, timeout);
MySoapEnvelope emptySoapEnvelope = new MySoapEnvelope(SoapEnvelope.VER11);
emptySoapEnvelope.bodyOut = null;
transport.call(methodname, emptySoapEnvelope);

Я не знаю, хотите ли вы выпустить новую версию с этим кодом. Я мог бы сделать новый метод в оригинальной SoapEnvelope под названием setEmptyEnvelope (). Но это зависит от вас. Вы могли бы ужиться с этим, но тогда вы должны сделать респектабельный документация, чтобы люди знали, как это делается.

0 голосов
/ 19 августа 2011

Интересно.Вы можете отлаживать в платформе, чтобы увидеть, что происходит.Если вы можете создать исправление для него, я буду рад вытащить его в апстрим и выпустить новую версию.

...