此代码示例来自APE官方网站:http://www.ape-project.org/
var client = new APE.Client();
client.load();
client.core.join('testChannel');
client.request.send('foo', {ping: 'ho hey', fieldWidthBinaryDataOrSpecialCharacters: '+/'});
client.onRaw('bar', function(raw, pipe) {
console.log('echo : ' + raw.data.echo);
console.log('Receiving : ' + raw.data.hello);
});
当我在服务器端接收到数据时,我发现特殊字符+/
已经被URL编码(%2B%2F
)。
APE总是使用GET吗?如果我们使用POST,我认为我们可以发布任何数据,包括二进制数据,对吧?但是如何在JSON中使用POST呢?
我的情况是,即使我不使用二进制格式,我也必须使用Base64。但是标准Base64使用+/
,这不是URL安全的。您可能建议使用URL安全版本的Base64,但URLSafeBase64不是标准版本,它也可能会产生其他问题。
我是不是误解了什么?
谢谢。
Peter
我终于完成了两步编码:
客户端:
- Base64编码
服务器端:
- URL解码;(URL编码似乎是在APE的某个地方自动完成的)
- Base64解码
附言:如果有人知道如何以更有效的方式传输二进制数据,请告诉我,我会把你的答案重新标记为正确的。