Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
NE_REQUEST_CREATE(3)	      neon API reference	  NE_REQUEST_CREATE(3)

NAME
       ne_request_create, ne_request_dispatch, ne_request_destroy - low-level
       HTTP request handling

SYNOPSIS
       #include	<ne_request.h>

       ne_request *ne_request_create(ne_session	*session, const	char *method,
				     const char	*target);

       int ne_request_dispatch(ne_request *req);

       void ne_request_destroy(ne_request *req);

DESCRIPTION
       The ne_request object represents	an HTTP	request	and the	associated
       response. The ne_request_create function	creates	a new request object
       for the given session. The target resource for the request is
       identified by the target, parameter, and	the method to be performed on
       that resource via the method parameter.

       The target string used must conform to the request-target definition
       given in	RFC 9112[1]. Usually this will take the	abolute-path form,
       which optionally	includes a query string.

       To dispatch a request, and process the response,	the
       ne_request_dispatch function can	be used. An alternative	is to use the
       (more complex, but more flexible) combination of	the ne_begin_request,
       ne_end_request, and ne_read_response_block functions; see
       ne_begin_request.  Dispatching a	request	may require multiple
       iterations of a request being sent and response received, for example
       if authentication is used (see ne_set_server_auth), or if a persistent
       connection times	out; this is handled internally	by
       ne_request_dispatch.

       To add extra headers in the request, the	functions
       ne_add_request_header and ne_print_request_header can be	used. To
       include a message body with the request,	one of the functions
       ne_set_request_body_buffer, ne_set_request_body_fd, or
       ne_set_request_body_provider can	be used.

       The return value	of ne_request_dispatch indicates merely	whether	the
       request was sent	and the	response read successfully. To discover	the
       result of the operation,	ne_get_status, along with any processing of
       the response headers and	message	body.

       A request can only be dispatched	once: calling ne_request_dispatch more
       than once on a single ne_request	object produces	undefined behaviour.
       Once all	processing associated with the request object is complete, use
       the ne_request_destroy function to destroy the resources	associated
       with it.	Any subsequent use of the request object produces undefined
       behaviour.

       Request methods are assumed to be idempotent[2] by default. For a
       request using a non-idempotent method such as POST, the
       NE_REQFLAG_IDEMPOTENT flag must be disabled using ne_set_request_flag.

RETURN VALUE
       The ne_request_create function returns a	pointer	to a request object
       (and never NULL).

       The ne_request_dispatch function	returns	zero if	the request was
       dispatched successfully,	and a non-zero error code otherwise.

NOTES
       The path, method	and target parameters of ne_request_create are used
       directly	in request data	without	validation, so must not	be taken from
       untrusted sources. For example, allowing	insertion of unescaped CR, LF
       or other	control	characters in these parameters may result in
       unexpected or insecure behaviour.

       neon does not impose any	length restrictions on request input data.

ERRORS
       NE_ERROR
	   Request failed (see session error string)

       NE_LOOKUP
	   The DNS lookup for the server (or proxy server) failed.

       NE_AUTH
	   Authentication failed on the	server.

       NE_PROXYAUTH
	   Authentication failed on the	proxy server.

       NE_CONNECT
	   A connection	to the server could not	be established.

       NE_TIMEOUT
	   A timeout occurred while waiting for	the server to respond.

EXAMPLE
       An example of applying a	MKCOL operation	to the resource	at the
       location	http://www.example.com/foo/bar/:

	   ne_session *sess = ne_session_create("http",	"www.example.com", 80);
	   ne_request *req = ne_request_create(sess, "MKCOL", "/foo/bar/");
	   if (ne_request_dispatch(req)) {
	      printf("Request failed: %s\n", ne_get_error(sess));
	   }
	   ne_request_destroy(req);

SEE ALSO
       ne_get_error, ne_set_error, ne_get_status, ne_add_request_header,
       ne_set_request_body_buffer, ne_set_request_flag.

COPYRIGHT
       Copyright (C) 2001-2024 Joe Orton

REFERENCES
	1. RFC 9112
	   https://www.rfc-editor.org/rfc/rfc9112

	2. idempotent
	   https://www.rfc-editor.org/rfc/rfc9110.html#name-idempotent-methods

neon 0.34.0		       23 November 2024		  NE_REQUEST_CREATE(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ne_request_dispatch&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help