Qore Programming Language
0.9.16
|
provides a way to communicate with HTTP servers using Qore data structures More...
#include <QoreHttpClientObject.h>
Public Member Methods | |
DLLEXPORT | QoreHttpClientObject () |
creates the QoreHttpClientObject object | |
virtual DLLEXPORT | ~QoreHttpClientObject () |
destroys the object and frees all associated memory | |
DLLEXPORT void | addDefaultHeaders (const QoreHashNode *hdr) |
Sets the value of multiple headers to send with every outgoing message. More... | |
DLLEXPORT void | addProtocol (const char *prot, int port, bool ssl=false) |
adds a protocol More... | |
DLLEXPORT void | clearProxyURL () |
clears the proxy URL | |
DLLEXPORT void | clearProxyUserPassword () |
clears the username and password for the proxy connection | |
DLLEXPORT void | clearUserPassword () |
clears the username and password for the connection | |
DLLEXPORT int | connect (ExceptionSink *xsink) |
opens a connection and returns a code giving the result More... | |
virtual DLLLOCAL void | deref () |
decrements the reference count of the object without the possibility of throwing a Qore-language exception | |
virtual DLLLOCAL void | deref (ExceptionSink *xsink) |
decrements the reference count of the object More... | |
virtual DLLEXPORT void | deref (ExceptionSink *xsink) |
decrements the reference count and deletes the object when it reaches 0 More... | |
DLLEXPORT void | disconnect () |
disconnects from the remote server | |
DLLEXPORT AbstractQoreNode * | get (const char *path, const QoreHashNode *headers, QoreHashNode *info, ExceptionSink *xsink) |
sends an HTTP "GET" method and returns the value of the message body returned, the caller owns the AbstractQoreNode reference returned More... | |
DLLEXPORT QoreStringNode * | getAssumedEncoding () const |
gets the assumed encoding More... | |
const DLLEXPORT char * | getConnectionPath () const |
returns the current connection path or 0 if none is set More... | |
DLLEXPORT int | getConnectTimeout () const |
returns the connect timeout in ms, negative numbers mean no timeout More... | |
DLLEXPORT QoreHashNode * | getDefaultHeaders () const |
Returns a hash of default headers to be sent with every outgoing request. More... | |
const DLLEXPORT char * | getDefaultPath () const |
returns the default path or 0 if none is set More... | |
const DLLEXPORT QoreEncoding * | getEncoding () const |
returns the default encoding for the object | |
DLLEXPORT bool | getEncodingPassthru () const |
returns the current encoding_passthru status More... | |
DLLEXPORT bool | getErrorPassthru () const |
returns the current error_passthru status More... | |
DLLEXPORT QoreStringNode * | getHostHeaderValue () const |
returns the Host header value More... | |
const DLLEXPORT char * | getHTTPVersion () const |
returns the http version as a string (either "1.0" or "1.1") More... | |
DLLEXPORT int | getMaxRedirects () const |
returns the value of the max_redirects option | |
DLLEXPORT bool | getNoDelay () const |
returns the value of the TCP_NODELAY flag on the object | |
DLLEXPORT QoreStringNode * | getProxyURL () |
returns the proxy connection parameters as a URL (or 0 if there is none), caller owns the reference count returned More... | |
DLLEXPORT bool | getRedirectPassthru () const |
returns the current redirect_passthru status More... | |
DLLEXPORT int | getTimeout () const |
returns the connection and response packet timeout value in milliseconds | |
DLLEXPORT QoreStringNode * | getURL () |
returns the connection parameters as a URL, caller owns the reference count returned More... | |
DLLEXPORT QoreHashNode * | head (const char *path, const QoreHashNode *headers, QoreHashNode *info, ExceptionSink *xsink) |
sends an HTTP "HEAD" method and returns the headers returned, the caller owns the QoreHashNode reference returned More... | |
DLLEXPORT bool | isConnected () const |
returns the connection status of the object | |
DLLEXPORT bool | isHTTP11 () const |
returns true if HTTP 1.1 protocol compliance has been set | |
DLLEXPORT bool | isProxySecure () const |
returns the SSL proxy connection parameter flag | |
DLLEXPORT bool | isSecure () const |
returns the SSL connection parameter flag | |
DLLEXPORT AbstractQoreNode * | post (const char *path, const QoreHashNode *headers, const QoreStringNode &body, QoreHashNode *info, ExceptionSink *xsink) |
sends an HTTP "POST" message to the remote server and returns the message body of the response, caller owns the AbstractQoreNode reference returned More... | |
DLLEXPORT AbstractQoreNode * | post (const char *path, const QoreHashNode *headers, const void *data, unsigned size, QoreHashNode *info, ExceptionSink *xsink) |
sends an HTTP "POST" message to the remote server and returns the message body of the response, caller owns the AbstractQoreNode reference returned More... | |
DLLEXPORT QoreHashNode * | send (const char *meth, const char *path, const QoreHashNode *headers, const void *data, unsigned size, bool getbody, QoreHashNode *info, ExceptionSink *xsink) |
sends a message to the remote server and returns the entire response as a hash, caller owns the QoreHashNode reference returned More... | |
DLLEXPORT void | sendChunked (const char *meth, const char *mpath, const QoreHashNode *headers, bool getbody, QoreHashNode *info, int timeout_ms, const ResolvedCallReferenceNode *recv_callback, QoreObject *obj, OutputStream *os, InputStream *is, size_t max_chunk_size, const ResolvedCallReferenceNode *trailer_callback, ExceptionSink *xsink) |
send a chunked HTTP message through an InputStream and receive the response to an OutputStream More... | |
DLLEXPORT void | sendWithOutputStream (const char *meth, const char *mpath, const QoreHashNode *headers, const QoreStringNode &body, bool getbody, QoreHashNode *info, int timeout_ms, const ResolvedCallReferenceNode *recv_callback, QoreObject *obj, OutputStream *os, ExceptionSink *xsink) |
make an HTTP request and receive the response to an OutputStream More... | |
DLLEXPORT void | sendWithOutputStream (const char *meth, const char *mpath, const QoreHashNode *headers, const void *data, unsigned size, bool getbody, QoreHashNode *info, int timeout_ms, const ResolvedCallReferenceNode *recv_callback, QoreObject *obj, OutputStream *os, ExceptionSink *xsink) |
make an HTTP request and receive the response to an OutputStream More... | |
DLLEXPORT void | setAssumedEncoding (const char *enc) |
sets the assumed encoding More... | |
DLLEXPORT void | setConnectionPath (const char *path) |
sets or clears the connection path More... | |
DLLEXPORT void | setConnectTimeout (int ms) |
sets the connect timeout in ms More... | |
DLLEXPORT void | setDefaultHeaderValue (const char *header, const char *val) |
sets the value of a default header to send with every outgoing message More... | |
DLLEXPORT void | setDefaultPath (const char *pth) |
sets the default path More... | |
DLLEXPORT void | setDefaultPort (int prt) |
sets the default port More... | |
DLLEXPORT void | setEncoding (const QoreEncoding *qe) |
sets the default encoding for the object | |
DLLEXPORT bool | setEncodingPassthru (bool set) |
sets the new and returns the old encoding_passthru status More... | |
DLLEXPORT bool | setErrorPassthru (bool set) |
sets the new and returns the old error_passthru status More... | |
DLLEXPORT void | setEventQueue (ExceptionSink *xsink, Queue *q, QoreValue arg, bool with_data) |
sets the event queue, must be already referenced before call | |
DLLEXPORT void | setEventQueue (Queue *cbq, ExceptionSink *xsink) |
sets the event queue, must be already referenced before call | |
DLLEXPORT void | setHTTP11 (bool h11) |
sets or clears HTTP 1.1 protocol compliance More... | |
DLLEXPORT int | setHTTPVersion (const char *version, ExceptionSink *xsink) |
sets the http version from a string More... | |
DLLEXPORT void | setMaxRedirects (int max) |
sets the max_redirects option | |
DLLEXPORT int | setNoDelay (bool nodelay) |
sets the TCP_NODELAY flag on the object More... | |
DLLEXPORT int | setOptions (const QoreHashNode *opts, ExceptionSink *xsink) |
set options with a hash, returns -1 if an exception was thrown, 0 for OK More... | |
DLLEXPORT void | setPersistent (ExceptionSink *xsink) |
temporarily disables implicit reconnections; must be called when the server is already connected | |
DLLEXPORT void | setProxySecure (bool is_secure) |
sets the SSL flag for use in the next connection to the proxy | |
DLLEXPORT int | setProxyURL (const char *proxy, ExceptionSink *xsink) |
sets the proxy URL More... | |
DLLEXPORT void | setProxyUserPassword (const char *user, const char *pass) |
sets the username and password for the proxy connection More... | |
DLLEXPORT bool | setRedirectPassthru (bool set) |
sets the new and returns the old redirect_passthru status More... | |
DLLEXPORT void | setSecure (bool is_secure) |
sets the SSL flag for use in the next connection | |
DLLEXPORT void | setTimeout (int to) |
sets the connection and response packet timeout value in milliseconds | |
DLLEXPORT int | setURL (const char *url, ExceptionSink *xsink) |
sets the connection URL More... | |
DLLEXPORT void | setUserPassword (const char *user, const char *pass) |
sets the username and password for the connection More... | |
provides a way to communicate with HTTP servers using Qore data structures
thread-safe, uses QoreSocket for socket communication
DLLEXPORT void QoreHttpClientObject::addDefaultHeaders | ( | const QoreHashNode * | hdr | ) |
Sets the value of multiple headers to send with every outgoing message.
hdr | the hash of headers to set |
DLLEXPORT void QoreHttpClientObject::addProtocol | ( | const char * | prot, |
int | port, | ||
bool | ssl = false |
||
) |
adds a protocol
useful for c++ derived classes
DLLEXPORT int QoreHttpClientObject::connect | ( | ExceptionSink * | xsink | ) |
opens a connection and returns a code giving the result
|
inline |
decrements the reference count of the object
xsink | any Qore-language exception information is stored here |
|
virtual |
decrements the reference count and deletes the object when it reaches 0
xsink | if an error occurs, the Qore-language exception information will be added here |
Reimplemented from AbstractPrivateData.
DLLEXPORT AbstractQoreNode* QoreHttpClientObject::get | ( | const char * | path, |
const QoreHashNode * | headers, | ||
QoreHashNode * | info, | ||
ExceptionSink * | xsink | ||
) |
sends an HTTP "GET" method and returns the value of the message body returned, the caller owns the AbstractQoreNode reference returned
if you need to get all the headers received, then use QoreHttpClientObject::send() instead
path | the path string to send in the header |
headers | a hash of headers to add to the message |
info | if not 0 then additional information about the HTTP communication will be added to the hash (key-value pairs), keys "headers", and optionally "redirect-#", "redirect-message-#" (where # is substituted with the redirect sequence number), and "chunked" (boolean, present only if the response was chunked) |
xsink | if an error occurs, the Qore-language exception information will be added here |
DLLEXPORT QoreStringNode* QoreHttpClientObject::getAssumedEncoding | ( | ) | const |
gets the assumed encoding
const DLLEXPORT char* QoreHttpClientObject::getConnectionPath | ( | ) | const |
returns the current connection path or 0 if none is set
DLLEXPORT int QoreHttpClientObject::getConnectTimeout | ( | ) | const |
returns the connect timeout in ms, negative numbers mean no timeout
DLLEXPORT QoreHashNode* QoreHttpClientObject::getDefaultHeaders | ( | ) | const |
Returns a hash of default headers to be sent with every outgoing request.
const DLLEXPORT char* QoreHttpClientObject::getDefaultPath | ( | ) | const |
returns the default path or 0 if none is set
DLLEXPORT bool QoreHttpClientObject::getEncodingPassthru | ( | ) | const |
returns the current encoding_passthru status
DLLEXPORT bool QoreHttpClientObject::getErrorPassthru | ( | ) | const |
returns the current error_passthru status
DLLEXPORT QoreStringNode* QoreHttpClientObject::getHostHeaderValue | ( | ) | const |
returns the Host
header value
const DLLEXPORT char* QoreHttpClientObject::getHTTPVersion | ( | ) | const |
returns the http version as a string (either "1.0" or "1.1")
DLLEXPORT QoreStringNode* QoreHttpClientObject::getProxyURL | ( | ) |
returns the proxy connection parameters as a URL (or 0 if there is none), caller owns the reference count returned
DLLEXPORT bool QoreHttpClientObject::getRedirectPassthru | ( | ) | const |
returns the current redirect_passthru status
DLLEXPORT QoreStringNode* QoreHttpClientObject::getURL | ( | ) |
returns the connection parameters as a URL, caller owns the reference count returned
DLLEXPORT QoreHashNode* QoreHttpClientObject::head | ( | const char * | path, |
const QoreHashNode * | headers, | ||
QoreHashNode * | info, | ||
ExceptionSink * | xsink | ||
) |
sends an HTTP "HEAD" method and returns the headers returned, the caller owns the QoreHashNode reference returned
path | the path string to send in the header |
headers | a hash of headers to add to the message |
info | if not 0 then additional information about the HTTP communication will be added to the hash (key-value pairs), keys "headers", and optionally "redirect-#", "redirect-message-#" (where # is substituted with the redirect sequence number), and "chunked" (boolean, present only if the response was chunked) |
xsink | if an error occurs, the Qore-language exception information will be added here |
DLLEXPORT AbstractQoreNode* QoreHttpClientObject::post | ( | const char * | path, |
const QoreHashNode * | headers, | ||
const QoreStringNode & | body, | ||
QoreHashNode * | info, | ||
ExceptionSink * | xsink | ||
) |
sends an HTTP "POST" message to the remote server and returns the message body of the response, caller owns the AbstractQoreNode reference returned
possible errors: method not recognized, redirection errors, socket communication errors, timeout errors
path | the path string to send in the header |
headers | a hash of headers to add to the message |
body | optional message body to send (should not be 0 for a POST) |
info | if not 0 then additional information about the HTTP communication will be added to the hash (key-value pairs), keys "headers", and optionally "redirect-#", "redirect-message-#" (where # is substituted with the redirect sequence number), and "chunked" (boolean, present only if the response was chunked) |
xsink | if an error occurs, the Qore-language exception information will be added here |
DLLEXPORT AbstractQoreNode* QoreHttpClientObject::post | ( | const char * | path, |
const QoreHashNode * | headers, | ||
const void * | data, | ||
unsigned | size, | ||
QoreHashNode * | info, | ||
ExceptionSink * | xsink | ||
) |
sends an HTTP "POST" message to the remote server and returns the message body of the response, caller owns the AbstractQoreNode reference returned
possible errors: method not recognized, redirection errors, socket communication errors, timeout errors
path | the path string to send in the header |
headers | a hash of headers to add to the message |
data | optional data to send (should not be 0 for a POST) |
size | the byte length of the data to send (if this is 0 then no data is sent) |
info | if not 0 then additional information about the HTTP communication will be added to the hash (key-value pairs), keys "headers", and optionally "redirect-#", "redirect-message-#" (where # is substituted with the redirect sequence number), and "chunked" (boolean, present only if the response was chunked) |
xsink | if an error occurs, the Qore-language exception information will be added here |
DLLEXPORT QoreHashNode* QoreHttpClientObject::send | ( | const char * | meth, |
const char * | path, | ||
const QoreHashNode * | headers, | ||
const void * | data, | ||
unsigned | size, | ||
bool | getbody, | ||
QoreHashNode * | info, | ||
ExceptionSink * | xsink | ||
) |
sends a message to the remote server and returns the entire response as a hash, caller owns the QoreHashNode reference returned
possible errors: method not recognized, redirection errors, socket communication errors, timeout errors
meth | the HTTP method name to send |
path | the path string to send in the header |
headers | a hash of headers to add to the message |
data | optional data to send (may be 0) |
size | the byte length of the data to send (if this is 0 then no data is sent) |
getbody | if true then a body will be read even if there is no "Content-Length:" header |
info | if not 0 then additional information about the HTTP communication will be added to the hash (key-value pairs), keys "headers", and optionally "redirect-#", "redirect-message-#" (where # is substituted with the redirect sequence number), and "chunked" (boolean, present only if the response was chunked) |
xsink | if an error occurs, the Qore-language exception information will be added here |
DLLEXPORT void QoreHttpClientObject::sendChunked | ( | const char * | meth, |
const char * | mpath, | ||
const QoreHashNode * | headers, | ||
bool | getbody, | ||
QoreHashNode * | info, | ||
int | timeout_ms, | ||
const ResolvedCallReferenceNode * | recv_callback, | ||
QoreObject * | obj, | ||
OutputStream * | os, | ||
InputStream * | is, | ||
size_t | max_chunk_size, | ||
const ResolvedCallReferenceNode * | trailer_callback, | ||
ExceptionSink * | xsink | ||
) |
send a chunked HTTP message through an InputStream and receive the response to an OutputStream
DLLEXPORT void QoreHttpClientObject::sendWithOutputStream | ( | const char * | meth, |
const char * | mpath, | ||
const QoreHashNode * | headers, | ||
const QoreStringNode & | body, | ||
bool | getbody, | ||
QoreHashNode * | info, | ||
int | timeout_ms, | ||
const ResolvedCallReferenceNode * | recv_callback, | ||
QoreObject * | obj, | ||
OutputStream * | os, | ||
ExceptionSink * | xsink | ||
) |
make an HTTP request and receive the response to an OutputStream
DLLEXPORT void QoreHttpClientObject::sendWithOutputStream | ( | const char * | meth, |
const char * | mpath, | ||
const QoreHashNode * | headers, | ||
const void * | data, | ||
unsigned | size, | ||
bool | getbody, | ||
QoreHashNode * | info, | ||
int | timeout_ms, | ||
const ResolvedCallReferenceNode * | recv_callback, | ||
QoreObject * | obj, | ||
OutputStream * | os, | ||
ExceptionSink * | xsink | ||
) |
make an HTTP request and receive the response to an OutputStream
DLLEXPORT void QoreHttpClientObject::setAssumedEncoding | ( | const char * | enc | ) |
sets the assumed encoding
DLLEXPORT void QoreHttpClientObject::setConnectionPath | ( | const char * | path | ) |
sets or clears the connection path
DLLEXPORT void QoreHttpClientObject::setConnectTimeout | ( | int | ms | ) |
sets the connect timeout in ms
ms | connect timeout in ms |
DLLEXPORT void QoreHttpClientObject::setDefaultHeaderValue | ( | const char * | header, |
const char * | val | ||
) |
sets the value of a default header to send with every outgoing message
header | the name of the header to send |
val | the string value to use in the HTTP header |
DLLEXPORT void QoreHttpClientObject::setDefaultPath | ( | const char * | pth | ) |
sets the default path
useful for c++ derived classes
DLLEXPORT void QoreHttpClientObject::setDefaultPort | ( | int | prt | ) |
sets the default port
useful for c++ derived classes
DLLEXPORT bool QoreHttpClientObject::setEncodingPassthru | ( | bool | set | ) |
sets the new and returns the old encoding_passthru status
DLLEXPORT bool QoreHttpClientObject::setErrorPassthru | ( | bool | set | ) |
sets the new and returns the old error_passthru status
DLLEXPORT void QoreHttpClientObject::setHTTP11 | ( | bool | h11 | ) |
sets or clears HTTP 1.1 protocol compliance
h11 | if true sets HTTP 1.1 protocol compliance, if false set 1.0 |
DLLEXPORT int QoreHttpClientObject::setHTTPVersion | ( | const char * | version, |
ExceptionSink * | xsink | ||
) |
sets the http version from a string
version | either "1.0" or "1.1" |
xsink | if an error occurs, the Qore-language exception information will be added here |
DLLEXPORT int QoreHttpClientObject::setNoDelay | ( | bool | nodelay | ) |
sets the TCP_NODELAY flag on the object
This function will try to set the TCP_NODELAY flag immediately if the socket is connected, otherwise will it set a flag and the TCP_NODELAY option will be set on the next connection. If an error occurs setting TCP_NODELAY on a connected socket, then this function will return a non-zero value, and errno will be set
nodelay | 0=turn off TCP_NODELAY, non-zero=turn on TCP_NODELAY |
DLLEXPORT int QoreHttpClientObject::setOptions | ( | const QoreHashNode * | opts, |
ExceptionSink * | xsink | ||
) |
set options with a hash, returns -1 if an exception was thrown, 0 for OK
options are:
opts | the options to set for the object |
xsink | if an error occurs, the Qore-language exception information will be added here |
DLLEXPORT int QoreHttpClientObject::setProxyURL | ( | const char * | proxy, |
ExceptionSink * | xsink | ||
) |
sets the proxy URL
proxy | the URL to use for connection to the proxy |
xsink | if an error occurs, the Qore-language exception information will be added here |
DLLEXPORT void QoreHttpClientObject::setProxyUserPassword | ( | const char * | user, |
const char * | pass | ||
) |
sets the username and password for the proxy connection
user | the username to set |
pass | the password to set |
DLLEXPORT bool QoreHttpClientObject::setRedirectPassthru | ( | bool | set | ) |
sets the new and returns the old redirect_passthru status
DLLEXPORT int QoreHttpClientObject::setURL | ( | const char * | url, |
ExceptionSink * | xsink | ||
) |
sets the connection URL
url | the URL to use for connection parameters |
xsink | if an error occurs, the Qore-language exception information will be added here |
DLLEXPORT void QoreHttpClientObject::setUserPassword | ( | const char * | user, |
const char * | pass | ||
) |
sets the username and password for the connection
user | the username to set |
pass | the password to set |