【发布时间】:2016-03-16 03:59:34
【问题描述】:
我正在开发 ios 应用程序,它从 Google 端点获取数据,数据在服务器上以 base 64 编码为自定义 java 对象,然后由端点方法返回。
在 iOS 端,我可以使用生成的客户端代码接收数据并打印数据。
我遇到了一个问题,我无法将数据解码回 GTL**** 端点自动生成的类。
解码后的数据显示为一些十六进制数字: 我的代码:
let respo2 = GTLDecodeBase64(responce) as? GTLEndpointStatusCollection
我还尝试使用 swift 类进行解码:
let respo = NSData(base64EncodedString: responce, options: NSDataBase64DecodingOptions(rawValue: 0))
输入是base64编码的:rO0ABXNyABNqYXZhLnV0aWwuQXJyYXlMaXN0eIHSHZnHYZ......
所需的输出应该是可读的数据, 但我得到的是:
<aced0005 73720013 6a617661 2e757469 6c2e4172 7261794c.....
我什至尝试过编码,用 NSUTF8 解码 base64 解码数据 但没用。
我做错了什么?是否可以将在 Java 中的服务器上编码的数据(带有自定义 Java 对象)解码回来? (我了解 Google 端点在两者之间进行序列化/反序列化)
提前致谢。
【问题讨论】:
-
您介意包括当前输出和所需输出吗?显示输入可能也是一个好主意。
-
谢谢,我已经用输入、所需输出和当前输出更新了帖子
-
看起来您需要发布执行编码的代码,因为这是问题发生的地方。如果我猜的话,那将是您采用 POJO 的原始序列化形式并通过 Base64 编码的线路发送它,并尝试在不理解该格式的 Swift / ObjC 中对其进行反序列化。
-
感谢大家的建议,我不是说我已经解决了问题,而是我们将服务器代码更改为直接发送数据,之前我们曾经将java obj转换为字节串然后再次编码成 Base64 字符串并通过 google 端点发送。非常欢迎任何进一步的解决方案或专家建议......再次感谢......
标签: swift google-app-engine google-cloud-endpoints