我想寄一个像这样的空信封:
<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);
我似乎不知道该怎么做,有人可以帮忙吗?
最佳答案
我已经通过创建我自己的 SoapSerializationEnvelope 扩展原始的并覆盖 writeBody 方法解决了这个问题: 公共(public)类 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() 的新方法。但这取决于你。 你可以接受这个,但你应该做一个体面的 文档,以便人们知道这是如何完成的。
关于Android ksoap2 发送空体信封?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7119410/