How do i get the request body ?
Maxim Dounin
mdounin at mdounin.ru
Fri Jan 3 03:40:34 UTC 2014
Hello!
On Wed, Jan 01, 2014 at 11:44:24PM -0500, humank wrote:
> Hello guys,
>
> I'm developing a nginx module, the intent is to get the request
> body, then write some response depends on what request body is.
> I've called the method ngx_http_read_client_request_body (r,
> ngx_http_myModule_handler);
>
> Since this code, i want to get the real request body in
> ngx_http_myModule_handler()
> Here are my codes ...
>
> void ngx_http_myModule_handler(ngx_http_request_t *r)
> {
> ngx_http_finalize_request(r, NGX_DONE);
>
> if(!(r->request_body->bufs == NULL)){
> ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "request is not
> empty.");
>
> }
> }
>
> the questions is , how can i get the r->request_body->bufs to char * ?
A request body is available as a series of
buffers in r->request_body->bufs. To understand more about
buffers, try reading Evan Miller's guide as available from here:
http://www.evanmiller.org/nginx-modules-guide.html
Some example code which uses r->request_body->bufs to access
request body contents as available in memory can be found in
src/http/ngx_http_variables.c, in the
ngx_http_variable_request_body() function.
Note though, that depending on a configuration and a request, the
request body may not be available in memory at all (that is, it
will be in temporary file, and there will be a file buffer in
r->request_body->bufs).
--
Maxim Dounin
http://nginx.org/
More information about the nginx
mailing list