我是在自问自答。
这个世界上恐怕只有我一个人这么做,我花了一个星期的时间才完成。如果也有人想要在Unity里用XML(-RPC),那我就为这个人节省了一周的时间。
我想要做的是和游戏服务器商讨一些东西,比如排行榜。服务器谈论的是XML-RPC,我很快就发现这在Unity里并不容易。
我是在自问自答。
这个世界上恐怕只有我一个人这么做,我花了一个星期的时间才完成。如果也有人想要在Unity里用XML(-RPC),那我就为这个人节省了一周的时间。
我想要做的是和游戏服务器商讨一些东西,比如排行榜。服务器谈论的是XML-RPC,我很快就发现这在Unity里并不容易。
建立XML来发送到服务器。
在Unity里,我没有找到可以不添加大量排行来做这个的标准函数,所以我建立了下述机制:
buildXMLRPCRequest 是用来建立 XML的。
你想要编码的字段HashTable可能包括types: int, string 或者 Hashtable的对象。它将返回精美格式化的(简单)XML-RPC字符串,准备发送到服务器。
发送
把XML发送到服务器,你需要发出带有设置为text/xml的mine类型post请求。标准C#函数没有一个能用于Unity的,但是用这种buildXMLRPCRequest逻辑输出非常有效,它所做的是:
在Unity发送:
我使用这个代码:
不适用Unity发送
我发现使用C#(MonoDevelop)的标准版本)开发library比用Uinty开发一切简单多了。所以如果想用C#做同样的逻辑发送,如下:
从 XML中提取数据
我写了一个简单的解析器。用于下述findNode函数的构造函数应给予原始XML数据,以及你想要找到的子节点对象。如果节点可以在最高级别的XML字符串找到,它将返回该节点的值,如果找不到就null。这个解析器是特定于:简单的XML-RPC,需要花点时间来解码编码的字符,那也很简单。