2

http.request() 内の node.js に次の関数があります

       res.on('data', function (chunk) {
    var sr="response: "+chunk;
    console.log(chunk);
    });

コンソールでこれを取得します

<Buffer 3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e 3d 22 31 2e 30 22 20 65 6e 63 6f
 64 69 6e 67 3d 22 75 74 66 2d 38 22 20 3f 3e 3c 72 65 73 75 6c 74 3e 3c 73 75 63
 ...>

しかし、私がこれを使用するとき:

res.on('data', function (chunk) {
    var sr="response: "+chunk;
    console.log(sr);
    });

次のような適切な xml 応答を取得します。

responose: .....xml responose.....

適切な応答を出力するために文字列を追加する必要がある理由がわかりません。そして、最初のコードで生成された応答は何を意味するのでしょうか?

4

2 に答える 2

9

chunkNode がバイナリデータを格納する方法であるBufferです。

これはバイナリ データであるため、適切に表示する前に文字列に変換する必要があります (そうしないとconsole.log、オブジェクト表現が表示されます)。1つの方法は、それを別の文字列に追加することです(2番目の例はそれを行います)、別の方法はそれを呼び出すtoString()ことです:

console.log(chunk.toString());

ただし、不完全な文字が含まれていると失敗する可能性があると思いますchunk(UTF-8 文字は複数のバイトで構成できますが、そのchunkようなバイト文字列の途中で切り取られないという保証はありません)。 .

于 2013-05-14T11:40:19.550 に答える