Comment appeler un webservice SOAP avec une simple Chaîne de caractères (xml dans un format de chaîne)

J'ai cette chaîne de caractères représentant un XML:

String soapCall="<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:m="http://www.example.org/stock"> <m:addDownloadParams> <m:idApp>";
soapCall+=idApp;
soapCall+="<m:versionApp>";
soapCall+=versonApp;
soapCall+="</m:versionApp> <m:os>Android</m:os> </m:addDownloadParams> </soap:Body> </soap:Envelope>";

Et j'ai ce webservice soap:

http://stats.mywebsite.com/ws/adddownload

Maintenant, j'ai besoin de passer d'une chaîne à ce webservice soap sur android, mais je ne sais pas le chemin, je sais que j'ai besoin d'utiliser httpcliente:

HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();

mais je ne sais pas comment appeler la soapwebservice avec cette chaîne.

Personne nantis d'un exemple de code? je ne peux pas le trouver sur google. Je ne veux pas utiliser une bibliothèque, j'ai besoin de le faire par moi-même

Grâce

EDIT: c'est le code, mais ça ne fonctionne pas, j'obtiens l'erreur 500-erreur interne du serveur:

    public static byte[] addDownloadIntoServer(){
byte[] result = null;
String SERVER_URL="http://stats.mywebsite.com/ws/server.php";
String SOAP_ACTION="addDownload";
String body="<?xml version=\"1.0\" encoding=\"UTF-8\"?><SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ns1=\"http://stats.mobincube.com/\"><SOAP-ENV:Body><ns1:addDownloadParams>";
body+="<idApp>" +SectionManager.instance.app_id+"</idApp>";
body+="<versionApp>"+SectionManager.instance.app_version+"</versionApp>";
body+="<source>android</source> <os>Android</os> </ns1:addDownloadParams></SOAP-ENV:Body></SOAP-ENV:Envelope>";
HttpParams httpParameters = new BasicHttpParams();
//Set the timeout in milliseconds until a connection is established.
int timeoutConnection = 15000;
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
//Set the default socket timeout (SO_TIMEOUT)
//in milliseconds which is the timeout for waiting for data.
int timeoutSocket = 35000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
DefaultHttpClient httpclient = new DefaultHttpClient(httpParameters);
/*
* httpclient.getCredentialsProvider().setCredentials( new
* AuthScope("os.icloud.com", 80, null, "Digest"), new
* UsernamePasswordCredentials(username, password));
*/
HttpPost httppost = new HttpPost(SERVER_URL );
httppost.setHeader("soapaction", SOAP_ACTION);
httppost.setHeader("Content-Type", "text/xml; charset=utf-8");
System.out.println("executing request" + httppost.getRequestLine());
//now create a soap request message as follows:
final StringBuffer soap = new StringBuffer();
soap.append("\n");
soap.append("");
//this is a sample data..you have create your own required data  BEGIN
soap.append(" \n");
soap.append(" \n");
soap.append("" + body);
soap.append(" \n");
soap.append(" \n");
/* soap.append(body); */
//END of MEssage Body
soap.append("");
Log.i("SOAP Request", ""+soap.toString());
//END of full SOAP request  message
try {
HttpEntity entity = new StringEntity(soap.toString(),HTTP.UTF_8);
httppost.setEntity(entity); 
HttpResponse response = httpclient.execute(httppost);//calling server
HttpEntity r_entity = response.getEntity();  //get response
Log.i("Reponse Header", "Begin...");          //response headers
Log.i("Reponse Header", "StatusLine:"+response.getStatusLine());
Header[] headers = response.getAllHeaders();
for(Header h:headers)
Log.i("Reponse Header",h.getName() + ": " + h.getValue());
Log.i("Reponse Header", "END...");
if (r_entity != null) {       
result = new byte[(int) r_entity.getContentLength()];  
if (r_entity.isStreaming()) {
DataInputStream is = new DataInputStream(
r_entity.getContent());
is.readFully(result);
}
}
}catch (Exception E) {
Log.i("Exception While Connecting", ""+E.getMessage());
E.printStackTrace();
}
httpclient.getConnectionManager().shutdown(); //shut down the connection
return result;
}