Вопрос

Я пытаюсь разобрать сообщение о датчике SOAP с XMLPullParser. Я получаю это через UDP Multicast. Я использую следующий код, чтобы получить его.

byte[] buf = new byte[1900];
DatagramPacket packet = new DatagramPacket(buf, buf.length);

mSocket.receive(packet);

// Damn ugly....
String data = new String(packet.getData())

Если я преобразую байт [], чтобы строка парсер не съел его ... Есть ли более элегантные способы сделать это?

Когда я печатаю XML (как строку), я получаю неиспользуемые байты в конце строки:

</s12:Envelope>À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?
Это было полезно?

Решение

Во-первых, я думаю, что вы захотите построить строку следующим образом:

String data = new String(packet.getData(), 
                         packet.getOffset(), 
                         packet.getLength());

Что касается туда лучше. Aiui не на самом деле, хотя там может быть третья сторона API, который облегчает заполнение / опорожнение дейтаграммов, так как вся байтовая упаковка очень плохо.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top