Don't try reading non-file objects

When a request is made with a body that's not a string, we try reading the object as a file.
Though it might not be a file object. In which case,we're going to end up with a `undefined method `read' for 42:Fixnum (NoMethodError)` error, which can be quite cryptic.

This avoids considering a body as a file unless it responds to `read?`, to prevent that cryptic error.