想要测试一下http的内容,我做了类似的事情:
socket = TCPSocket.open('localhost',4567)
request = "GET / HTTP/1.1\r\nHost:localhost\r\n\r\n"
socket.print request
但是西纳特拉给了我一个错误:
[2012-08-01 14:04:11] ERROR bad Request-Line `'.
ec2-184-169-164-27.us-west-1.compute.amazonaws.com - - [01/Aug/2012:14:04:11 UTC] "" 400 313
- ->
有什么想法吗?
答案 0 :(得分:0)
这可能取决于Web服务器,某些Web服务器需要某些标头(我遇到了同样的问题并通过添加Accept标头解决了),还有一些防火墙需要User-Agent,所以试试这个之一:
socket.puts "GET / HTTP/1.1\r\n"
socket.puts "Host: localhost\r\n"
socket.puts "Accept: text/html,*/*\r\n"
socket.puts "User-Agent: Mozilla/4.0 (Windows; MSIE 6.0; Windows NT 6.0)\r\n"
socket.puts "Connection: close\r\n"
socket.puts "\r\n"
还要注意之后的空格:(很少见)但是网络服务器可能需要这个空间!
也使用puts可能比print更好。 (在我看来!)