title: How to set character encoding in SOAP request
body: <p>I am calling a SAP SOAP Service from a web servlet in Java. For some reason SAP is giving me an error every time I use special characters in the fields of my request such as 'è' or 'à'. The WSDL of the SOAP Service is defined in UTF-8 and I have set my character encoding accordingly as you can see below. However I am not sure this is the correct way. Also, notice that if I use SOAP UI (with the same envelope) the request works correctly so it must be something on Java side.</p>
  
  <pre><code>URL url = new URL(SOAP_URL);
  String authorization = Base64Coder.encodeString(SOAP_USERNAME + ":" + SOAP_PASSWORD);
  String envelope = "&lt;soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:urn='urn:sap-com:document:sap:soap:functions:mc-style'&gt;&lt;soapenv:Header/&gt;&lt;soapenv:Body&gt;&lt;urn:ZwsMaintainTkt&gt;&lt;item&gt;à&lt;/item&gt;&lt;/urn:ZwsMaintainTkt&gt;&lt;/soapenv:Body&gt;&lt;/soapenv:Envelope&gt;";
  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();
  </code></pre>