跨平台传输类型对象

时间:2011-11-04 19:37:54

标签: java php web-services

我想创建某种Web API(我没有对协议的偏好),其中服务器使用Java而客户端使用PHP。

我希望请求和响应都是对象(类的实例,而不是JSON样式的哈希)。对象的字段可以是基本类型或其他对象。我将在客户端和服务器代码中定义所有必需的类。 PHP和Java有相似的对象模型,因此用两种语言编写相应的类应该不难。

为了使这项工作,需要一些自动方式来序列化一方的对象,并在另一方面反序列化它。它需要知道哪个PHP类映射到哪个Java类,以及如何转换字段。我可以写一些东西,但是有一个现有的协议来传输这样的对象吗?可以使用SOAP完成吗?

3 个答案:

答案 0 :(得分:2)

Java和PHP对象不可互换。您必须在两端定义对象类型,并且传输协议可以是您喜欢的任何内容。序列化和反序列化使整个过程透明化。传输介质可以是JSON,XML,YAML或其他任何内容。

对于类似记录的对象: {“_ type”:“MyCoolObjectType”,“a”:1,“b”:2,“c”:3“}

如果你想写一次并在任何地方使用,我建议在两端使用相同的语言,否则你必须有一个可以在你选择的语言之间进行翻译的编译器。

答案 1 :(得分:1)

只要请求/响应不是很复杂,SOAP Web服务就可以处理基本抽象。您可以在java中创建类,然后获取API以为它们导出WSDL。

答案 2 :(得分:0)

您需要将它们序列化为相同的字符串。序列化的PHP格式和Java格式不同,因此不兼容。你需要一个通用的交换格式,我建议你不要使用PHP。但是,在PHP中序列化的功能相当简单,如果您选择使用它,则包含在PHP源代码的ext / standard / var.c文件中。

请参阅以下内容:

来自http://en.wikipedia.org/wiki/XML (强调我的):

  

尽管XML的设计侧重于文档,但它广泛用于表示任意数据结构,例如 Web服务