如何在mqtt消息中发送对象而不是字符串?

时间:2014-02-27 07:23:15

标签: java android mqtt

我目前正在使用mqtt在客户端和服务器之间进行通信,而mqtt publish方法将消息作为字节。我需要在我的单个mqtt发布中发送纬度,经度,地址等,并能够在服务器端接收它们。我怎样才能实现它?

我在客户端(android)上使用wmqtt客户端库,在服务器端使用paho客户端库(jsp,servlets)。

deviceloc d=new deviceloc();
d.id="1234";
d.add="hyder";
d.lat=17.5;
d.lon=78.5;
try {
ByteArrayOutputStream b = new ByteArrayOutputStream();
ObjectOutputStream o=new ObjectOutputStream(b);
o.writeObject(d);
byte bytes[]=b.toByteArray();
MqttMessage data=new MqttMessage(bytes);
ByteArrayInputStream b1 = new ByteArrayInputStream(data.toString().getBytes());
ObjectInputStream o1 = new ObjectInputStream(b1);
Object obj1;
try {
obj1 = o1.readObject();
deviceloc dd=(deviceloc)obj1;
System.out.println(dd.id);
System.out.println(dd.add);
System.out.println(dd.lat);
System.out.println(dd.lon);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
catch(IOException e)
{
e.printStackTrace();
}

我正在获得流中断的异常

1 个答案:

答案 0 :(得分:3)

将对象序列化为xml(或CSV或Json或roll-your-own格式)字符串。从这些字符串中形成您的消息。以字节形式发送消息。在接收端反转该过程。