开发者社区 问答 正文

如何通过MIDlet将对象发送到服务器?

我有一个服务器,它接收序列化对象,处理它,然后返回输出。我想通过MIDlet发送一个对象,但是J2ME没有ObjectOutputStream类。我应该做些什么?

展开
收起
被纵养的懒猫 2019-09-17 16:50:40 620 分享 版权
阿里云 AI 助理回答

在J2ME(Java 2 Micro Edition)环境中,由于其设计目标是用于资源受限的设备,因此许多标准Java SE库中的类,如ObjectOutputStreamObjectInputStream,并未包含在内。为了实现在J2ME中序列化对象并通过网络发送,你可以采取以下几种方法:

  1. 使用JSON或XML进行序列化:这是最常见的跨平台数据交换格式,且J2ME支持基本的网络和文本处理功能。你可以使用第三方库如json-me(一个轻量级的JSON解析器/生成器,专为J2ME设计)来将对象转换为JSON字符串,然后通过HTTP或者Socket发送。

    • 步骤
      • 将你的对象转换成Map或其他简单数据结构。
      • 使用json-me将这个数据结构转换成JSON字符串。
      • 通过HTTP POST请求或Socket连接发送这个字符串到服务器。
      • 服务器端接收JSON字符串后,反序列化为对象进行处理。
  2. 自定义序列化方案:如果你的对象结构相对简单,也可以自己实现一套序列化逻辑,比如将对象的属性转化为特定格式的字符串或字节流,然后在服务器端再解析回来。

  3. 使用Protocol Buffers或Apache Avro:虽然这些库原生不支持J2ME,但理论上可以通过裁剪或移植部分代码来实现对这些高效序列化框架的支持。这需要较高的技术门槛,但对于性能有严格要求的应用可能是一个选择。

  4. 轻量级二进制序列化:如果JSON或XML因体积大而不适合,可以考虑实现一种简单的二进制序列化协议。这种方式需要你手动编码和解码对象的每个字段到字节数组,并在服务器端做相应的解码操作。

  5. 寻找或开发适用于J2ME的序列化库:尽管直接使用ObjectOutputStream不可行,但社区里可能存在一些开发者针对J2ME环境编写的序列化库,可以尝试搜索并评估是否满足需求。

综上所述,最简便且通用的方法通常是采用JSON或XML进行序列化与反序列化。这样不仅在J2ME中易于实现,而且服务器端的处理也较为普遍和成熟。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答