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
Tweet
А такой сервер кроме как “HTTP/1.0 200 OK” что-нибудь ещё умеет делать?
Судя по приведенному коду – кроме как выводить список полученных заголовков – ничего :)
А где, собственно, вывод полученных заголовков?
Мне кажется, должно быть вместо “println data” – “System.out.println data”. Иначе груви пишет в сокет.
Собсно “println data” и есть вывод полученных заголовков.
А куда ещё кроме сокета должен писать HTTP-сервер?
А, тоесть мы пишем заголовки в ответе тому, кто делал запрос. Хорошо, а чем тогда смотреть их?
Если источник запросов под контролем – так можно Fiddler какой-нибудь использовать, или Ethereal. Мне кажется, этого достаточно.
Смотреть браузером.
Там даже написано “point your browser to http://127.0.0.1:8000“
И что видно в браузере?
Я смотрел на это дело в Firefox, Opera и IE.
Там только пустые странички. Page Source тоже ничего не покажет. И это естественно.
Ладно, я вообще понимаю, скрипт класссный, и как его использовать для решения своих задач – я знаю и использую.
Только немного “подпилил”.
Просто получается, что скрипт немного недоделанный, и из поста непонятно, как им вообще пользоваться (точнее, таким скриптом – некак).
Уважаемый,
Не знаю что и как вы там запускаете, но судя по всему читать то, что написано в заметке не хотите.
Только что попробовал запустить так:
C:\Users\Vadim\AppData\Local>groovy -l 8000 Web2.groovygroovy is listening on port 8000
и вот что получилось
Что я делаю не так?
Беру свои слова обратно.
Только что из принципа запустил на внешнем сервере – да, работает. Локально у меня работать не хочет. Пустые странички и всё тут.
“Что я делаю не так?” – у меня тот же вопрос.
Мистика.
Файервол какой-то глючит, что ли…
И ещё раз извини, я сильно протупил.
Написал уже три поста, и не удосужился проверить ещё раз исходник. Стыд мне и позор!
Прошу прощения, что отвлёк.
Сергей,
Проверьте код – мог “побиться” при копирование-вставке.
Да, я как раз и проверил.
Видимо так и произошло. Сейчас работает как надо.
Спасибо за терпение.
Ненавижу отвлекать зря, а так уж получилось…
Та ниче :)
А что было то?
Уж не знаю, какого лешего, но вместо
[data += line + "\n"]
получилось
[data += line + "\\n"]
И аналогично \\n в выводе “HTTP … 200 …”
Толи Эклипс проглючил, толи я мало спал %).
Естественно, что всё это добро не работало.
И я в “праведном гневе” начал постить…