2014-10-24 4 views
0

Как получить только заголовки ответов в em_http_request?Получить только заголовки ответов в em_http_request

Я пытался использовать этот код:

EventMachine.run do 
    http = EventMachine::HttpRequest.new('my_url').get 
    http.headers do |headers| 
    Fiber.current.resume headers 
    end 
end 

, но я не хочу, чтобы получить все тело. Как я могу остановить выполнение запроса? http.close не работает.

UPD
http.instance_variable_get(:'@conn').close помогает мне, но может быть вы знаете более интересное решение

ответ

1

Если вы не хотите тело, you should do a HEAD request instead of a GET. Чтобы завершить цикл события, необходимо явно вызвать EventMachine.stop.

EventMachine.run do 
    http = EventMachine::HttpRequest.new('my_url').head 
    http.headers do |headers| 
    # do something with headers 

    EventMachine.stop 
    end 
end 
+0

Не цикл событий. Просто попросите. См. UPD – Falcon

+0

+1, да, запрос HEAD - это правильный способ сделать это. –

+0

Когда вы выполняете запрос 'HEAD', запрос завершается после получения заголовков _ по определению_. Я полагаю, что к моменту вызова callback заголовка соединение уже может быть закрыто. Если вы не хотите прекращать цикл событий, просто удалите «EventMachine.stop» –