2014-01-17 4 views
0

У меня проблема с вызовом node.js http.request. Я хочу вызвать внешний api (в моем случае Openstack api). Запрос отправляется успешно, и я получаю ответ, но мой запрос не заканчивается после получения ответа. Вместо этого он ждет около 2 минут, а затем запрос заканчивается. Когда вы совершаете тот же звонок REST от клиента REST, такого как почтальон, нет ожидания, и все работает хорошо.Node.js http-запрос не заканчивается

Вот мой код, функция вызывается, когда я делаю запрос GET на/auth URL.

var options = { 
    host: 'someIp', 
    path: '/auth', 
    method: 'GET', 
    headers: { 
     "Host":"auth.api.someIp", 
     "X-Auth-User":"username", 
     "X-Auth-Key":"key" 
    } 
}; 

var request = http.request(options, function(response){ 
    var body = "" 
    response.on('data', function(data) { 
     body += data; 
    }); 
    response.on('end', function() {    
     console.log('response end') 
    }); 
}); 
request.on('error', function(e) { 
    console.log('Problem with request: ' + e.message); 
}); 
request.on('end', function() { 
    console.log('request end'); 
}); 

request.end(); 

Это журнал консоли:

конец ответ GET/Auth 200 120080ms

Мой вопрос, почему запрос не заканчивается, когда я делаю это с node.js http.request?

+0

Сделайте запрос к «google.com», например, если он работает, это может быть из-за заголовка, который вы не указали или недействительны. – micnic

+0

Я пробовал выше, но все одно и то же, все еще ждет около 2 минут ... – Case09

ответ

0

Mmh попробуйте прослушать финишное событие.

request.on('finish', function() { 
    console.log('request end'); 
}); 

запрос является примером Incoming Message.

+0

Я попытался прислушаться к закрытию и завершению событий. При закрытии изменений нет, и когда я слушаю финишное событие, он записывает вывод в консольный журнал, но он все еще ждет около двух минут, прежде чем это будет сделано. – Case09

+0

Возможно, что-то с вашим именем пользователя/ключом? –

+0

Api, с которым я подключаюсь, возвращает мне действительный ответ, поэтому он не может быть из-за имени пользователя/ключа. Поэтому я получаю ответ со всеми необходимыми данными, но запрос все еще не заканчивается. – Case09

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