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