3

iPhone チャット アプリケーションを作成しています。

ブラウザから iPhone に JSON チャット メッセージを送信する場合:

    {"content":"Hi"}

iPhone は以下を受け取ります。

    {"content":{"0":72,"1":105,"length":2}}

ただし、まったく同じメッセージを受信することを意図しています。

この問題を再現するには、まず node.js と redis をインストールします。それで:

  • コードを取得します。

    git clone git://github.com/acani/acani.git
    cd acani
    git submodule update --init
    
  • デフォルトのポートで Redis を起動します。

  • http://github.com/acani/acani-nodeから:

    node acani-node-server.js # run node.js chat server
    # open index.html in a Google Chrome or Firefox and follow instructions.
    
  • http://github.com/acani/acani-chat/tree/master/Lovers2/にある Lovers.xcodeprojを開き、LoversAppDelegate.m を変更して、HomeViewController ではなく ChatViewController を最初にロードします。

    homeViewController = [[HomeViewController alloc] init]; # comment out this line
    # change the next line to:
    navigationController = [[UINavigationController alloc] initWithRootViewController:[[ChatViewController alloc] init]];
    # Then, build & run.
    
4

2 に答える 2

6

私たちはそれを理解しました。iPhone や Objective-C ではありませんでした。node.js サーバーで変換エラーが発生していました。JSON オブジェクトの文字列値を引用符で囲むのを忘れていたため、JSON.stringify()JavaScript 関数は上記のように文字列を変換していました...ただし、次のようなことをしていました: {"content":Hi}. それを : に変更すると{"content":"Hi"}、うまくいきました。ああ...

于 2010-08-29T04:06:17.743 に答える
1

私の推測では、stringByAddingPercentEscapesUsingEncodingを使用して、送信されている文字列(JSON)をエスケープし、受信時にエスケープを解除する必要があります。

最初の3つの数値は072-10進数で「H」です。これは、「エンコードせずに送信したために失われる可能性がある」と私に思わせます。この理論に反することは他にもありますが、一見の価値があると思います。

于 2010-08-26T05:56:30.530 に答える