2013-08-23 2 views
0

POST 데이터를 디버깅하려면 간단한 WEBrick 서버를 실행하고 있습니다. POST 데이터를 로그에 출력하고 싶습니다.WEBrick : 로그 POST 데이터

내 코드는 다음과 같습니다 server 단순히에 WEBrick 서버입니다

server.mount_proc '/' do |req, res| 
    res.body = "Web server response:\n" 
    # Output POST data here... 
end 

.

제안 사항?

답변

2

req.body을 사용하여 원본 게시물 데이터에 액세스합니다. 당신이 (해시)를 구문 분석 된 데이터를 원하는 경우

server.mount_proc '/' do |req, res| 
    res.body = "Web server response:\n" 
    p req.body # <--- 
end 

대신 req.query를 사용합니다.

UPDATE

사용자 정의 :AccessLog는 :

require 'webrick' 

log = [[ $stderr, WEBrick::AccessLog::COMMON_LOG_FORMAT + ' POST=%{body}n']] 

server = WEBrick::HTTPServer.new :Port => 9000, :AccessLog => log 
server.mount_proc '/' do |req, res| 
    req.attributes['body'] = req.body 
    res.body = "Web server response:\n" 
end 
server.start 
+0

@SnowCrash, 답변을 업데이트했습니다. – falsetru

2

혹시 netcat을 시도 적이 있습니까?

$ man nc 

그런 다음이 같은 서버를 시작할 수 있습니다 : 당신이 할 수있는 경우 확인하려면

$ nc -l 8080 (-l act as a server, listening on port 8080) 
(hangs) 

I '는 = 10 & B = 20'의 데이터를 POST 요청을 보내는 경우 http://locahost:8080, netcat 출력 :

$ nc -l 8080  
POST/HTTP/1.1 
Host: localhost:8080 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:23.0) Gecko/20100101 Firefox/23.0 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: null 
Accept-Encoding: gzip, deflate 
DNT: 1 
Content-Length: 9 
Content-Type: text/plain; charset=UTF-8 
Connection: keep-alive 
Pragma: no-cache 
Cache-Control: no-cache 

a=10&b=20 
+0

Mac OS X에서 'nc -l 8080'이 작동하지 않습니다. 대신'nc -lp 8080'을 사용해야했습니다 ('l'과'p'를 조합하면 작동하지 않아도되지만 문제를 해결할 수있는 것처럼 보입니다). – Snowcrash

+0

Hmmm ... OSX 10.6.8을 사용하고 있습니다. 맨 페이지는 다음과 같이 말합니다 :'-l이 옵션을 -p 옵션과 함께 사용하면 에러가 발생합니다 :'-p 사용하는 데 오류가 있습니다 이 옵션은 -l 옵션과 함께 사용됩니다. 그리고 두 옵션을 함께 사용하면 netcat이 나 대신 시작 메시지를 보여줍니다. -p를 사용하지 않으면 어떻게됩니까? – 7stud