0

このコード例は、APE 公式 Web サイト ( 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 を使えば、Binary データを含む任意のデータを投稿できると思いますよね。しかし、JSON で POST を使用するにはどうすればよいでしょうか。

私の場合、Binary 形式を使用しなくても、Base64 を使用する必要があります。ただし、標準の Base64 は+/URL セーフではないものを使用します。Base64 の URL セーフ バージョンの使用を提案するかもしれませんが、URLSafeBase64 は標準ではなく、他の問題を引き起こす可能性もあります。

私は何か誤解していますか?

ありがとう。

ピーター

4

1 に答える 1

0

私はついに2段階のエンコーディングを行いました:

クライアント側:

  1. Base64エンコーディング;

サーバ側:

  1. URLデコード; (URLエンコードはAPEのどこかで自動的に行われるようです)
  2. Base64デコード。

PS:バイナリデータをより効率的に転送する方法を知っている人がいたら、私に知らせてください。あなたの答えを正しいものとして再マークします。

于 2012-01-25T01:19:50.273 に答える