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
Vous devez vous connecter pour publier un commentaire.
Depuis un savon de demande est l'utilisation de xml xml-d'en-tête de spécifier l'encodage de votre demande:
<?xml version="1.0" encoding="UTF-8"?>
new OutputStreamWriter(con.getOutputStream())
utilise la plate-forme de codage par défaut qui plus est sans doute certains saveur de l'ISO8859. Utilisationnew OutputStreamWriter(con.getOutputStream(),"UTF-8")
au lieuOriginalL'auteur piet.t