Hi dein String so wie er am Anfang war ist schon richtig auch die Zeilenumbrüche "/n" (UTF-8 %0A) stimmen.
Nur hast du ihn nicht in den Zeichensatz UTF-8 Konvertiert das macht URLEntcoder.
Dein String vom Anfang sieht bei mir so aus.
%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F%3E%0A+%3CDevices%3E%0A+%3CDevice%3E%0A+%3CID%3EEZR0114AF%3C%2FID%3E%0A+%3CHEATAREA+nr%3D%224%22%3E%0A+%3CT_TARGET%3E18.7%3C%2FT_TARGET%3E%0A+%3C%2FHEATAREA%3E%0A+%3C%2FDevice%3E%0A+%3C%2FDevices%3E
in welchen Zeichensatz deine Steuerung es haben will weiss ich nicht.
Zitat
im LogCat für data folgendes ausgegeben:
+%3CDevices%3E+%3CDevice%3E+%3CID%3EEZR0114AF%3C%2FID%3E+%3CHEATAREA+nr%3D%224%22%3E+%3CT_TARGET%3E18.0%3C%2FT_TARGET%3E+%3C%2FHEATAREA%3E+%3C%2FDevice%3E+%3C%2FDevices%3E
Das kann ja eigentlich auch nicht richtig
ist schon richtig nur fehlt bei dir die erste Zeile und der Zeilenumbruch.
Die erste Zeile <?xml version=\"1.0\" encoding=\"UTF-8\"?> wird aber die API brauchen.
Ein in UTF-8 Kodirter Text sieht nun mal so aus mit den Prozent Zeichen. Schaue dir die Zeichensätze im Internet mal an.
ASCII hatte immer nur ein Byte pro Zeichen somit sind max 256 Zeichen (Druckbar oder auch nicht Druckbare Zeichen wie 0A 0C) möglich das reichte nicht für alle möglichen Zeichen und Sprachen( Chinesische Schriftzeichen) aus, also erfand man den Unicode der 32 Bit breit ist . Um Speicherplatz und Bandbreite zu sparen wurde der UTF-8 erfunden.
Der meist für Http benutz wird.
auch könnte es sinvoll sein die parameter in der URLConnection zu setzen
con.setRequestProperty( "Content-Type","application/x-www-form-urlencoded" );
con.setRequestProperty( "charset", "utf-8");
con.setRequestProperty( "Content-Length", String.valueOf(data.getBytes().length) );
Mal eine andere Frage die Premission hast du gesetzt oder?