1

リモートサーバーにjsonファイルがあります。<domainName>/info.json. URLに移動すると、次のようになります。

{
  "version": "1.8 RC05"
}

しかしcurl <domainname>/info.json、端末から行うと、次のようなものが得られます。

�T*K-*�RP2Գr60Uk�%�c9@

次のようにノードを使用する場合request

app.get('/', function(req,res){
    request.get('<domainname>/info.json').on('response', function(data){
        data = data.setEncoding('utf8');
        console.log(data.statusCode);
        res.json(data);
    });
});

次の応答が返されます。

     {
      "statusCode": 200,
      "headers": {
        "content-type": "application\/json; charset=utf-8",
        "content-length": "46",
        "connection": "close",
        "date": "Tue, 22 Sep 2015 09:56:22 GMT",
        "content-encoding": "gzip",
        "cache-control": "max-age=1800, public",
        "last-modified": "Mon, 21 Sep 2015 09:57:35 GMT",
        "etag": "\"93934d435cecbf8f5bde8627903587a0\"",
        "server": "AmazonS3",
        "age": "903",
        "x-cache": "Hit from cloudfront",
        "via": "1.1 44e39d55d481d0cc2faa76f70b7a556b.cloudfront.net (CloudFront)",
        "x-amz-cf-id": "eOy_rb3vasUnhb9bvvKI3AZvcvXAzJeJCI3TmK94ZlaxHu1XwBKzGg=="
      },
      "request": {
        "uri": {
          "protocol": "https:",
          "slashes": true,
          "auth": null,
          "host": "<domainname>",
          "port": 443,
          "hostname": "<domainname>",
          "hash": null,
          "search": null,
          "query": null,
          "pathname": "\/info.json",
          "path": "\/info.json",
          "href": "<domainname>\/info.json"
        },
        "method": "GET",
        "headers": {

        }
      }
    }

で何かをしなければならないと思いますがcharset=utf-8、続行する方法がわかりません。ノード アプリで最初の json オブジェクトを取得して提供するにはどうすればよいですか?

編集1

答えで示唆されているように、私は次のように体に仕えました:

app.get('/', function(req,res){
    request('<domainname>/info.json', function (error, response, body) {
      if (!error && response.statusCode == 200) {
        console.log(body)
      }
    });
});

今、私は次の応答を受け取ります:

"\u001f�\b\u0000\u0000\u0000\u0000\u0000\u0000\u0003���T*K-*���S�RP2ԳP\br60U��\u0005\u0000k�%�\u001a\u0000\u0000\u0000"
4

2 に答える 2

1

Node Request ドキュメントを参照してください。

bodyおそらく、全体ではなく、を送信したいでしょうresponse:

app.get('/', function(req,res){
    request('<domainname>/info.json', function (error, response, body) {
      if (!error && response.statusCode == 200) {
        console.log(body)
      }
    })
});

おそらく、応答を gzip/解凍することもできます。

このために、Nodes Zlib実装を使用できます

ここでその使用例を見ることができますHow do I ungzip (decompress) a NodeJS request's module gzip response body?

于 2015-09-22T10:28:22.090 に答える