I've attached a patch for review. This patch adds the following method to the request classes:
- sfRequest::getContent()
- sfWebRequest::getContentType($trim = true)
Having access to these values will enable symfony to parse parameters from POST and PUT requests with content types other than the standard urlencoded query string.
Furthermore, the standard method for returning the request content, file_get_contents('php://input'), returns NULL if the stream has already been read. Having this stream read in the core will make it easy for plugins to reliably access this data.
One thing I'm not clear on is how this will affect functional testing. A sfWebRequestTest class will probably have to be created that includes a ->setContent() method, which sfBrowser would then have access to.