2016-06-12 4 views
0

Я не могу получить простой HTTP-запрос для работы с node.js. Следующий код просто зависает, ничего не записывая и не печатая никаких ошибок.Использование node.js http module

http = require 'http' 

callback = (response) -> 
    console.log 'callback' 
    str = '' 

    # another chunk of data has been recieved, so append it to `str` 
    response.on 'data', (chunk) -> 
    console.log 'data' 
    str += chunk 

    # the whole response has been recieved, so we just print it out here 
    response.on 'end', -> 
    console.log str 

http.get 'http://hacker-news.firebaseio.com/v0/topstories.json', callback 

Сформирован JavaScript:

// Generated by CoffeeScript 1.10.0 
(function() { 
    var callback, http; 

    http = require('http'); 

    callback = function(response) { 
    var str; 
    console.log('callback'); 
    str = ''; 
    response.on('data', function(chunk) { 
     console.log('data'); 
     return str += chunk; 
    }); 
    return response.on('end', function() { 
     return console.log(str); 
    }); 
    }; 

    http.get('http://hacker-news.firebaseio.com/v0/topstories.json', callback); 

}).call(this); 

ответ

0

Ваш существующий код, кажется, работает хорошо с другой URL. Этот URL, в частности, не работает над HTTP, по крайней мере, он зависает, когда я использую curl. Загрузка его в браузере, похоже, возвращает 307 перенаправление на версию HTTPS, поэтому я не уверен, почему она не отвечает на curl или ваш код.

Несмотря на это, вы, вероятно, хотите использовать URL HTTPS в любом случае, так что просто изменить код, чтобы сделать это:

https = require 'https' 

callback = (response) -> 
    console.log 'callback' 
    str = '' 

    # another chunk of data has been recieved, so append it to `str` 
    response.on 'data', (chunk) -> 
    console.log 'data' 
    str += chunk 

    # the whole response has been recieved, so we just print it out here 
    response.on 'end', -> 
    console.log str 

https.get 'https://hacker-news.firebaseio.com/v0/topstories.json', callback 
0

использования Try LIB, которые поддерживают как HTTP и HTTPS, как, «запрос» или «запрос -promise.

Ниже пример отлично работает,

var request = require('request'); 
request('https://www.xxxxx.com', function (error, response, body) { 
    if (!error && response.statusCode == 200) { 
    console.log(body); 
    } 
}) 

Дополнительная информация: https://www.npmjs.com/package/request

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