Comment définir l'encodage des caractères dans la requête SOAP

Je suis de l'appel d'une SAP Service SOAP à partir d'un web servlet Java. Pour une raison que de SAP est de me donner un message d'erreur à chaque fois que je utiliser de caractères spéciaux dans les champs de ma demande comme le 'è' ou 'à'. Le WSDL du Service SOAP est défini en UTF-8 et j'ai réglé mon encodage des caractères en conséquence comme vous pouvez le voir ci-dessous. Cependant, je ne suis pas sûr que ce est la bonne façon. Notez également que si j'utilise du SAVON d'INTERFACE utilisateur (avec la même enveloppe) la requête fonctionne correctement, alors il doit être quelque chose sur Java côté.

URL url = new URL(SOAP_URL);
String authorization = Base64Coder.encodeString(SOAP_USERNAME + ":" + SOAP_PASSWORD);
String envelope = "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:urn='urn:sap-com:document:sap:soap:functions:mc-style'><soapenv:Header/><soapenv:Body><urn:ZwsMaintainTkt><item>à</item></urn:ZwsMaintainTkt></soapenv:Body></soapenv:Envelope>";
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setReadTimeout(SOAP_TIMEOUT);
con.setRequestMethod("POST");
con.setRequestProperty("Content-type", "text/xml; charset=utf-8");
con.setRequestProperty("SOAPAction", SOAP_ACTION_ZWSMANTAINTKT);
con.setRequestProperty("Authorization", "Basic " + authorization);
con.setDoOutput(true);
con.setDoInput(true);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(con.getOutputStream());
outputStreamWriter.write(envelope);
outputStreamWriter.close();
InputStream inputStream = con.getInputStream();

OriginalL'auteur raz3r | 2015-11-17