Il codice attualmente chiama getBytes()
utilizzando la codifica di default della piattaforma - è molto raro che sia una buona idea. Scopri che cos'è la codifica dei dati e usali. (E 'probabile che sia UTF-8.)
Se il Blackberry include DocumentBuilder.parse(InputSource)
, che sarebbe preferibile:
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
StringReader reader = new StringReader(xmlData);
try {
Document doc = docBuilder.parse(xml);
doc.getDocumentElement().normalize();
} finally {
reader.close();
}
Se questo non funziona, ha un molto sguardo da vicino alla vostra stringa, per esempio in questo modo:
for (int i=0; i < xmlData.length(); i++) {
// Use whatever logging you have on the Blackberry
System.out.println((int) xmlData.charAt(i));
}
E 'possibile che il problema sta leggendo la risposta dal server - se stai leggendo male, si potrebbe avere valori null Unicode (\ u0000) nella stringa, che non può apparire, ovviamente, in log/debug output, ma causerebbe l'errore che hai mostrato.
EDIT: Ho appena visto che si stanno ottenendo i dati di base64 in primo luogo, quindi perché convertirlo in una stringa e quindi tornare in byte? Basta decodificare il Base64 in un array di byte e quindi usarlo come base del tuo ByteArrayInputStream
. Quindi non devi mai occuparti di una codifica del testo, in primo luogo.
fonte
2009-06-09 05:29:17
ci mostrano l'xml –