如何发送SOAP请求Android

时间:2015-05-07 08:23:22

标签: android web-services soap

我正在使用kso​​ap提出请求。

但是,我对如何在soap请求中发送标题和以下格式有疑问。

我有肥皂请求数据,我想向服务器发送肥皂请求:

肥皂要求:

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ihc="http://testingsite.com" xmlns:ihcl="http://testingsite.com">
<soapenv:Header>
<wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/07/secext">
<wsse:UsernameToken>
<wsse:Username>name</wsse:Username>
<wsse:Password>password</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>

<soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<MyList xmlns="http://testingsite.com">
<Details>
<Name1>hi</Name1>
<Name2>Hello</Name2>
<MyAddress>
<Address1 IsPrimary="Y">
<Add1>Personal</Add1>
<Add2>Personal</Add2>
</Address1>
</MyAddress>
</Details>
</MyList>
</soapenv:Body>
</soapenv:Envelope>

1 个答案:

答案 0 :(得分:0)

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    textView = (TextView) findViewById(R.id.test);
    AsyncTaskRunner runner = new AsyncTaskRunner();
    runner.execute();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}



private class AsyncTaskRunner extends AsyncTask<String, String, String>        {

    private String resp;
    @Override
    protected String doInBackground(String... params) {
        publishProgress("Loading contents...");
        try {


            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            SoapObject request = new SoapObject(NAMESPACE, METHOD);
            PropertyInfo quotesProperty = new PropertyInfo();
            request.addProperty("WsClientName","RAKDEDTester");
            request.addProperty("Password", "d41d8cd98f00b204e9800998ecf8427e");

            envelope.bodyOut = request;

            HttpTransportSE transport = new HttpTransportSE(URL);
            try {
                transport.call(NAMESPACE + SOAP_ACTION_PREFIX + METHOD, envelope);
            } catch (IOException e) {
                e.printStackTrace();
            } catch (XmlPullParserException e) {
                e.printStackTrace();
            }

            if (envelope.bodyIn != null) {
                SoapPrimitive resultSOAP = (SoapPrimitive) ((SoapObject) envelope.bodyIn).getProperty(0);
                resp=resultSOAP.toString();
            }
        } catch (Exception e) {
            e.printStackTrace();
            resp = e.getMessage();
        }
        return resp;
    }


    @Override
    protected void onPostExecute(String result) {

        textView.setText(result);
    }


    @Override
    protected void onPreExecute() {

    }

    @Override
    protected void onProgressUpdate(String... text) {
        textView.setText(text[0]);

    }
}

}