2015-09-22 2 views
1

У меня есть файл json на удаленном сервере. <domainName>/info.json. Когда я перейти к URL я получаю:Как получить json-файл из другого домена с запросом узла?

{ 
    "version": "1.8 RC05" 
} 

Но когда я curl <domainname>/info.json от моего терминала, я получаю что-то вроде:

�T*K-*�RP2Գr60Uk�%�[email protected] 

Когда я использую узел 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-объект и обслуживать его?

EDIT 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" 

ответ

1

См Node Request Docs.

Вы, вероятно, хотите быть отправки 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 implementation

Вы можете увидеть exmaple его использования здесь How do I ungzip (decompress) a NodeJS request's module gzip response body?

+0

хорошо, так что у нас есть одна проблема вниз на части ответа. но я все еще получаю ' T * K- * S RP2 Գ r60U k % '. – Pravin

+0

в браузере, это обслуживается '\ u001f \ b \ u0000 \ u0000 \ u0000 \ u0000 \ u0003 T * K- * S RP2 Գ P \ br60U \ u0005 \ u0000k % \ u001a \ u0000 \ u0000' – Pravin

+0

См. Дополнительную информацию, добавленную к моему сообщению выше. – duncanhall

Смежные вопросы