我创建了一个非常简单的服务器:我如何传入POST multipart请求时使用Ruby读取和tcpserver的
#!/bin/ruby
require 'socket'
server = TCPServer.open 2000
puts "Listening on port 2000"
loop {
client = server.accept
client.puts "HTTP/1.1 200/OK\r\nContent-type:text/html\r\n\r\n"
response = "My super slim ruby http server"
client.puts response
received = client.recv(1024)
puts received
puts "\n"
client.close
}
到目前为止,它成为我的目的,这是打印出可能出现的要求来自给定的客户。不过,如果我使用,例如,下面的curl命令来创建一个请求:
curl -F "data=someData" http://localhost:2000
我的红宝石服务器只打印出HTTP头,而不是请求的主体。
有没有办法做到这一点?
我认为更正确的方法是查看标题,看看身体有多长时间,然后阅读这个数量。用这个改变更新了我的答案。 – bundacia
这已经帮了我很多。但是,我注意到我无法读取比我在第一个client.recv()中读到的更多的字节。所以在这个例子中,主体的调用只能读取1024字节 – user3820846