создать мыльный конверт с заголовком безопасности в Android с помощью ksoap2

Я хочу создать мыльный конверт с заголовком безопасности в Android с помощью ksoap2. Мой код андроида как ...

import org.ksoap2.SoapEnvelope;
import org.ksoap2.SoapFault;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.kxml2.kdom.Element;
import org.kxml2.kdom.Node;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class SOP_WebService extends Activity
{

    private final String NAMESPACE = "http://xmlns.oracle.com/WorklistRetrival";
    private final String URL = "http://www.sample.com/orabpel/default/WorklistRetrival/1.0";
    private final String SOAP_ACTION = "process";
    private final String METHOD_NAME = "WorklistRetrievalREQ";  

    public void onCreate(Bundle savedInstanceState) 
    {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.soap_webservice);

         Button btnClick = (Button) findViewById(R.id.btnClick);
         btnClick.setOnClickListener(new OnClickListener()
         {
            @Override
            public void onClick(View v) 
            {
                callWebservice();
            }
        });
    }

    public void callWebservice()
    {

        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
        PropertyInfo pi = new PropertyInfo();
        pi.setNamespace(NAMESPACE);
        pi.setName("WorklistType"); 
        pi.setValue("PO_REQUISITION"); 
        request.addProperty(pi);

        PropertyInfo p2 = new PropertyInfo();
        p2.setNamespace(NAMESPACE);
        p2.setName("Status"); 
        p2.setValue("TODO"); 
        request.addProperty(p2);

        PropertyInfo p3 = new PropertyInfo();
        p3.setNamespace(NAMESPACE);
        p3.setName("Mode"); 
        p3.setValue(""); 
        request.addProperty(p3);


         SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

        envelope.setOutputSoapObject(request);
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
        Log.i("bodyout", "" + envelope.bodyOut.toString());

        try 
        {
            androidHttpTransport.debug = true;
            androidHttpTransport.call(SOAP_ACTION, envelope);
            SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
            Log.i("myApp", response.toString());
            Log.i("request", "" + envelope.bodyIn);
            Log.i("response", "" + envelope.bodyOut);
            Log.i("request", "" + androidHttpTransport.requestDump);
            Log.i("response", "" + androidHttpTransport.responseDump);
        } 
        catch (SoapFault e)
        {
            Log.d("soapFault", "soapFault");
            e.printStackTrace();
        }
        catch (Exception e) 
        {
            Log.d("Exception", "Exception");
            e.printStackTrace();
            Log.d("Exception Generated", ""+e.getMessage());
        }

    }

}

И выше код создайте ниже запрос мыла без заголовка безопасности.

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <soap:Header>
    </soap:Header>
    <soap:Body xmlns:ns1="http://xmlns.oracle.com/bpel/aubi/mobile/Worklist">
        <ns1:WorklistRetrievalREQ>
            <ns1:WorklistType>HR_OFFER</ns1:WorklistType>
            <ns1:Status>TODO</ns1:Status>
            <ns1:Mode/>
        </ns1:WorklistRetrievalREQ>
    </soap:Body>
</soap:Envelope>

Но мне нужно создать ниже мыльный запрос с заголовком безопасности

<soap:Envelope 
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">

    <soap:Header>
        <wsse:Security 
            xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 
            xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 
            xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" soap:mustUnderstand="1">
                <wsse:UsernameToken 
                    xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 
                    xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
                            <wsse:Username>cbrown</wsse:Username>
                            <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">welcome</wsse:Password></wsse:UsernameToken>
        </wsse:Security>
    </soap:Header>
    <soap:Body xmlns:ns1="http://xmlns.oracle.com/bpel/aubi/mobile/Worklist">
        <ns1:WorklistRetrievalREQ>
            <ns1:WorklistType>HR_OFFER</ns1:WorklistType>
            <ns1:Status>TODO</ns1:Status>
            <ns1:Mode/>
       , </ns1:WorklistRetrievalREQ>
    </soap:Body>
</soap:Envelope>

Пожалуйста, скажите мне, какие изменения сделаны в этом коде

Ответы на вопрос(2)

Ваш ответ на вопрос