from small one page howto to huge articles all in one place

search text in:




Other .linuxhowtos.org sites:gentoo.linuxhowtos.org



Last additions:
using iotop to find disk usage hogs

using iotop to find disk usage hogs

words:

887

views:

210187

userrating:


May 25th. 2007:
Words

486

Views

259164

why adblockers are bad


Workaround and fixes for the current Core Dump Handling vulnerability affected kernels

Workaround and fixes for the current Core Dump Handling vulnerability affected kernels

words:

161

views:

150528

userrating:


April, 26th. 2006:

Druckversion
You are here: manpages





NE_REQUEST_CREATE

Section: neon API reference (3)
Updated: 23 November 2024
Index Return to Main Contents
 

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 m[blue]RFC 9112m[][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 m[blue]idempotentm[][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: %sn", 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 © 200-2024 Joe Orton
 

REFERENCES

1.
RFC 9112
https://www.rf-editor.org/rfc/rfc9112
2.
idempotent
https://www.rf-editor.org/rfc/rfc9110.html#nam-idempoten-methods


 

Index

NAME
SYNOPSIS
DESCRIPTION
RETURN VALUE
NOTES
ERRORS
EXAMPLE
SEE ALSO
COPYRIGHT
REFERENCES





Support us on Content Nation
rdf newsfeed | rss newsfeed | Atom newsfeed
- Powered by LeopardCMS - Running on Gentoo -
Copyright 2004-2025 Sascha Nitsch Unternehmensberatung GmbH
Valid XHTML1.1 : Valid CSS
- Level Triple-A Conformance to Web Content Accessibility Guidelines 1.0 -
- Copyright and legal notices -
Time to create this page: 14.0 ms