I am playing with Webrick and I tried to change a little the example given
with the packet but when I fill a html form and send it the fields values
are empty (using GET method, Webrick doesn’t accept POST method). How to
fix it?
Thank you!
jilani
#!/usr/local/bin/ruby
require 'webrick’
include WEBrick
s = HTTPServer.new(:Port => 2000, :DocumentRoot => “/xitami/webpages”)
class HelloServlet < HTTPServlet::AbstractServlet
def do_GET(req, res)
name = req[‘fname’]
email = req[‘email’]
st = "Hello #{fname} – #{email} “
res[‘Content-Type’] = “text/html"
res.body = st
end
end
s.mount(”/hello”, HelloServlet)
It seems to be a common problem.
check the thread 'Integrated webserver?"
I’d recommend to contact the author (???).
-ronnie.
[2003-08-21 14:44:46] INFO WEBrick 1.3.1
[2003-08-21 14:44:46] INFO ruby 1.8.0 (2003-08-04) [i686-linux]
[2003-08-21 14:44:47] WARN TCPServer Error: Address family not
supported by protocol - socket(2)
Could it be because I’m trying to run it inside a 192.* network?
dunno if it could possibly get confused, this it’s working fine for
me:
require ‘webrick’
include WEBrick
s = HTTPServer.new(
:Port => 2000,
:DocumentRoot => “/”
)
I am playing with Webrick and I tried to change a little the example
given with the packet but when I fill a html form and send it the
fields values are empty (using GET method, Webrick doesn’t accept POST
method). How to fix it?
Thank you!
jilani
#!/usr/local/bin/ruby
require ‘webrick’
include WEBrick
s = HTTPServer.new(:Port => 2000, :DocumentRoot => “/xitami/webpages”)
class HelloServlet < HTTPServlet::AbstractServlet
def do_GET(req, res)
name = req[‘fname’]
email = req[‘email’]
st = “Hello #{fname} – #{email} ”
res[‘Content-Type’] = “text/html”
res.body = st
end
end
s.mount(“/hello”, HelloServlet)
I am playing with Webrick and I tried to change a little the example given
with the packet but when I fill a html form and send it the fields values
are empty (using GET method, Webrick doesn’t accept POST method). How to
Webrick accepts POST method. Just define a method do_POST(req, res).
[…]
name = req[‘fname’]
use req.query[‘fname’].
HTTPRequest# returns values from the request header. For example:
req['Connection'] # => keep-alive
The values you are searching are in the array returned by HTTPRequest#query.
I am playing with Webrick and I tried to change a little the example given
with the packet but when I fill a html form and send it the fields values
are empty (using GET method, Webrick doesn’t accept POST method). How to
fix it?
HTTPRequest#query returns a Hash of parsed query.
def do_GET(req, res)
q = req.query
fname = q[‘fname’]
email = q[‘email’]
st = “Hello #{fname} – #{email} ”
res[‘Content-Type’] = “text/html”
res.body = st
end
In addition, do_POST should be defined for POST request.
def do_GET(req, res)
q = req.query
fname = q[‘fname’]
email = q[‘email’]
st = “Hello #{fname} – #{email} ”
res[‘Content-Type’] = “text/html”
res.body = st
end
In addition, do_POST should be defined for POST request.
That’s ok thank you.
Well, now instead of having the output of results (server side) to
“$stderr” I want to have it in a “log_file”. How to initialize the BasicLog
class?
There are two logging options; :Logger is server’s trace log
and :AccessLog is an array of access logs.
Each entry of :AccessLog includes BasicLog object and logging
format string. The specification of format string is a subset
of Apache’s LogFormat.