Android ksoap2 发送空体信封?

标签 android soap ksoap2 ksoap

我想寄一个像这样的空信封:

     <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/

相关文章:

java - 如何使用 ksoap2 验证 sap web 服务

java - Android ksoap2 Web 服务获取 WSDL 的 XML 描述?

c# - OnlyOnRanToCompletion 和 NotOnFaulted 之间的区别?

android - 如何更改 Android 应用程序的启动器文本

android - 单击 webView 中的其他一些超链接/按钮时,Webview 客户端不监听 shouldOverrideUrlLoading 方法

xml - 如何查找 Sabre Soap API 的特定端点?

php - PHP Soap 应用程序的 cURL 与 __SoapClient

android - android 1.6 中的设备序列号

java - 使用 Camel+Spring WS 发送 SOAP 附件?

android - Android 中使用 ksoap2 的 NTLM 身份验证