Simple HTTP server in 10 lines of Groovy code [En]

Рубрика: Development, Groovy | 26 August 2007, 11:35 | Vadim Voituk

There was a simple task to get all HTTP-headers, sent by my mobile browser to web-server.
I have no time to setup some additional software to “catch” HTTP-headers, so i have write such tiny (10 lines only) Groovy script:

if (init)
	data = "";

if (line.size() > 0) {
	data += line + "\n"
} else {
	println "HTTP/1.0 200 OK\n"
	println data
	return "success"
}

Run this code in a TCP listener mode:
$ groovy -l 8000 Web2.groovy
groovy is listening on port 8000

And point your browser to http:///myserver:8000

Комментариев: 15

15 Responses to “Simple HTTP server in 10 lines of Groovy code [En]”

Комментарии:

  1. Michael de`OZ

    А такой сервер кроме как “HTTP/1.0 200 OK” что-нибудь ещё умеет делать?

  2. vadim

    Судя по приведенному коду – кроме как выводить список полученных заголовков – ничего :)

  3. Sergey Bondarenko

    А где, собственно, вывод полученных заголовков?
    Мне кажется, должно быть вместо “println data” – “System.out.println data”. Иначе груви пишет в сокет.

  4. Vadim Voituk

    Собсно “println data” и есть вывод полученных заголовков.
    А куда ещё кроме сокета должен писать HTTP-сервер?

  5. Sergey Bondarenko

    А, тоесть мы пишем заголовки в ответе тому, кто делал запрос. Хорошо, а чем тогда смотреть их?
    Если источник запросов под контролем – так можно Fiddler какой-нибудь использовать, или Ethereal. Мне кажется, этого достаточно.

  6. Vadim Voituk

    Смотреть браузером.
    Там даже написано “point your browser to http://127.0.0.1:8000

  7. Sergey Bondarenko

    И что видно в браузере?
    Я смотрел на это дело в Firefox, Opera и IE.
    Там только пустые странички. Page Source тоже ничего не покажет. И это естественно.

    Ладно, я вообще понимаю, скрипт класссный, и как его использовать для решения своих задач – я знаю и использую.
    Только немного “подпилил”.

    Просто получается, что скрипт немного недоделанный, и из поста непонятно, как им вообще пользоваться (точнее, таким скриптом – некак).

  8. Vadim Voituk

    Уважаемый,
    Не знаю что и как вы там запускаете, но судя по всему читать то, что написано в заметке не хотите.
    Только что попробовал запустить так:

    C:\Users\Vadim\AppData\Local>groovy -l 8000 Web2.groovy
    groovy is listening on port 8000

    и вот что получилось
    Groovy HTTP server

    Что я делаю не так?

  9. Sergey Bondarenko

    Беру свои слова обратно.
    Только что из принципа запустил на внешнем сервере – да, работает. Локально у меня работать не хочет. Пустые странички и всё тут.
    “Что я делаю не так?” – у меня тот же вопрос.
    Мистика.
    Файервол какой-то глючит, что ли…

  10. Sergey Bondarenko

    И ещё раз извини, я сильно протупил.
    Написал уже три поста, и не удосужился проверить ещё раз исходник. Стыд мне и позор!
    Прошу прощения, что отвлёк.

  11. Vadim Voituk

    Сергей,
    Проверьте код – мог “побиться” при копирование-вставке.

  12. Sergey Bondarenko

    Да, я как раз и проверил.
    Видимо так и произошло. Сейчас работает как надо.
    Спасибо за терпение.
    Ненавижу отвлекать зря, а так уж получилось…

  13. Vadim Voituk

    Та ниче :)
    А что было то?

  14. Sergey Bondarenko

    Уж не знаю, какого лешего, но вместо
    [data += line + "\n"]
    получилось
    [data += line + "\\n"]
    И аналогично \\n в выводе “HTTP … 200 …”
    Толи Эклипс проглючил, толи я мало спал %).
    Естественно, что всё это добро не работало.
    И я в “праведном гневе” начал постить…

Leave a Reply