Я исправил проблему, создав собственный 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 (). Но это зависит от вас.
Вы могли бы ужиться с этим, но тогда вы должны сделать респектабельный
документация, чтобы люди знали, как это делается.