Как отправить xml на IP и получить ответ xml в android?

Я пытаюсь отправить xml на IP. Я делаю это с помощью следующего кода:

String sMessage = "<SERVER><CONNECT><IP>192.168.10.14</IP><CLIENT_ID>123</CLIENT_ID></CONNECT></SERVER>";
Socket socket = new Socket("192.168.252.148", 34543);
System.out.println("socket connected---: "+socket.isConnected());
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
InputStream in = socket.getInputStream();
out.println(sMessage);
byte[] buffer = new byte[in.available()];
in.read(buffer);
String rMsg = new String(buffer);
System.out.println("rMsg: "+rMsg);
out.close();
in.close();
socket.close();

rMsg всегда пуст. соединение сокета верно. Почему мне не приходит ответ. Я попытался изменить InputStream на BufferedInputStream, но это не помогло. Любая идея решить эту проблему, либо исправив этот код, либо имея новую идею? Заранее спасибо.


person Piscean    schedule 28.06.2013    source источник


Ответы (2)


Боюсь, я не очень понимаю, что вы пытаетесь сделать. Вы отправляете XML-файл по адресу, достаточно честно, но почему вы автоматически предполагаете, что получатель знает, как понять и создать ответ в формате XML? Что такое серверная реализация?

Если есть такая реализация и вы не получаете данные, то должна быть проблема на этом конце, не могли бы вы выложить код из нее?

person GreenGodot    schedule 28.06.2013

Что сервер должен отправить вам обратно? Дело в том, что вы отправляете XML на сервер и хотите одновременно получать ввод с сервера. Но ответ от сервера может занять некоторое время. Но я предполагаю, что в этот момент ваш входной поток закрыт или вы его больше не слушаете. Одним из простых способов проверить это будет поместить все в цикл while, чтобы вы увидели, отвечает ли ваш сервер (чуть позже)... вы также можете прослушивать сетевую карту вашего сервера с помощью wireshark. Возможно, ваш сервер ничего не отправляет?

person B770    schedule 28.06.2013