Top |
Functions
Properties
gchar * | accept-language | Read / Write |
gboolean | accept-language-auto | Read / Write |
SoupSessionFeature * | add-feature | Read / Write |
GType * | add-feature-by-type | Read / Write |
gpointer | async-context | Read / Write / Construct Only |
GStrv | http-aliases | Read / Write |
GStrv | https-aliases | Read / Write |
guint | idle-timeout | Read / Write |
SoupAddress * | local-address | Read / Write / Construct Only |
gint | max-conns | Read / Write |
gint | max-conns-per-host | Read / Write |
GProxyResolver * | proxy-resolver | Read / Write |
SoupURI * | proxy-uri | Read / Write |
GType * | remove-feature-by-type | Read / Write |
gchar * | ssl-ca-file | Read / Write |
gboolean | ssl-strict | Read / Write |
gboolean | ssl-use-system-ca-file | Read / Write |
guint | timeout | Read / Write |
GTlsDatabase * | tls-database | Read / Write |
gboolean | use-ntlm | Read / Write |
gboolean | use-thread-context | Read / Write |
gchar * | user-agent | Read / Write |
Signals
void | authenticate | Run First |
void | connection-created | Run First |
void | request-queued | Run First |
void | request-started | Run First |
void | request-unqueued | Run First |
void | tunneling | Run First |
Types and Values
SoupSession | |
enum | SoupRequestError |
#define | SOUP_REQUEST_ERROR |
#define | SOUP_SESSION_PROXY_URI |
#define | SOUP_SESSION_PROXY_RESOLVER |
#define | SOUP_SESSION_MAX_CONNS |
#define | SOUP_SESSION_MAX_CONNS_PER_HOST |
#define | SOUP_SESSION_TLS_DATABASE |
#define | SOUP_SESSION_SSL_USE_SYSTEM_CA_FILE |
#define | SOUP_SESSION_SSL_CA_FILE |
#define | SOUP_SESSION_SSL_STRICT |
#define | SOUP_SESSION_ASYNC_CONTEXT |
#define | SOUP_SESSION_USE_THREAD_CONTEXT |
#define | SOUP_SESSION_TIMEOUT |
#define | SOUP_SESSION_IDLE_TIMEOUT |
#define | SOUP_SESSION_USER_AGENT |
#define | SOUP_SESSION_ADD_FEATURE |
#define | SOUP_SESSION_ADD_FEATURE_BY_TYPE |
#define | SOUP_SESSION_REMOVE_FEATURE_BY_TYPE |
#define | SOUP_SESSION_ACCEPT_LANGUAGE |
#define | SOUP_SESSION_ACCEPT_LANGUAGE_AUTO |
#define | SOUP_SESSION_HTTP_ALIASES |
#define | SOUP_SESSION_HTTPS_ALIASES |
#define | SOUP_SESSION_LOCAL_ADDRESS |
Description
SoupSession is the object that controls client-side HTTP. A SoupSession encapsulates all of the state that libsoup is keeping on behalf of your program; cached HTTP connections, authentication information, etc. It also keeps track of various global options and features that you are using.
Most applications will only need a single SoupSession; the primary reason you might need multiple sessions is if you need to have multiple independent authentication contexts. (Eg, you are connecting to a server and authenticating as two different users at different times; the easiest way to ensure that each SoupMessage is sent with the authentication information you intended is to use one session for the first user, and a second session for the other user.)
In the past, SoupSession was an abstract class, and users needed
to choose between SoupSessionAsync (which always uses
GMainLoop-based I/O), or SoupSessionSync (which always uses
blocking I/O and can be used from multiple threads simultaneously).
This is no longer necessary; you can (and should) use a plain
SoupSession, which supports both synchronous and asynchronous use.
(When using a plain SoupSession, soup_session_queue_message()
behaves like it traditionally did on a SoupSessionAsync, and
soup_session_send_message()
behaves like it traditionally did on a
SoupSessionSync.)
Functions
soup_session_new ()
SoupSession *
soup_session_new (void
);
Creates a SoupSession with the default options.
Since 2.42
soup_session_new_with_options ()
SoupSession * soup_session_new_with_options (const char *optname1
,...
);
Creates a SoupSession with the specified options.
Parameters
optname1 |
name of first property to set |
|
... |
value of |
Since 2.42
soup_session_request ()
SoupRequest * soup_session_request (SoupSession *session
,const char *uri_string
,GError **error
);
Creates a SoupRequest for retrieving uri_string
.
Since 2.42
soup_session_request_uri ()
SoupRequest * soup_session_request_uri (SoupSession *session
,SoupURI *uri
,GError **error
);
Creates a SoupRequest for retrieving uri
.
Since 2.42
soup_session_request_http ()
SoupRequestHTTP * soup_session_request_http (SoupSession *session
,const char *method
,const char *uri_string
,GError **error
);
Creates a SoupRequest for retrieving uri_string
, which must be an
"http" or "https" URI (or another protocol listed in session
's
“http-aliases” or “https-aliases”).
Since 2.42
soup_session_request_http_uri ()
SoupRequestHTTP * soup_session_request_http_uri (SoupSession *session
,const char *method
,SoupURI *uri
,GError **error
);
Creates a SoupRequest for retrieving uri
, which must be an
"http" or "https" URI (or another protocol listed in session
's
“http-aliases” or “https-aliases”).
Since 2.42
SoupSessionCallback ()
void (*SoupSessionCallback) (SoupSession *session
,SoupMessage *msg
,gpointer user_data
);
Prototype for the callback passed to soup_session_queue_message()
,
qv.
soup_session_queue_message ()
void soup_session_queue_message (SoupSession *session
,SoupMessage *msg
,SoupSessionCallback callback
,gpointer user_data
);
Queues the message msg
for asynchronously sending the request and
receiving a response in the current thread-default GMainContext.
If msg
has been processed before, any resources related to the
time it was last sent are freed.
Upon message completion, the callback specified in callback
will
be invoked. If after returning from this callback the message has not
been requeued, msg
will be unreffed.
(The behavior above applies to a plain SoupSession; if you are using SoupSessionAsync or SoupSessionSync, then the GMainContext that is used depends on the settings of “async-context” and “use-thread-context”, and for SoupSessionSync, the message will actually be sent and processed in another thread, with only the final callback occurring in the indicated GMainContext.)
Contrast this method with soup_session_send_async()
, which also
asynchronously sends a message, but returns before reading the
response body, and allows you to read the response via a
GInputStream.
Parameters
session |
||
msg |
the message to queue. |
[transfer full] |
callback |
a SoupSessionCallback which will be called after the message completes or when an unrecoverable error occurs. |
[allow-none][scope async] |
user_data |
a pointer passed to |
[allow-none] |
soup_session_requeue_message ()
void soup_session_requeue_message (SoupSession *session
,SoupMessage *msg
);
This causes msg
to be placed back on the queue to be attempted
again.
soup_session_send_message ()
guint soup_session_send_message (SoupSession *session
,SoupMessage *msg
);
Synchronously send msg
. This call will not return until the
transfer is finished successfully or there is an unrecoverable
error.
Unlike with soup_session_queue_message()
, msg
is not freed upon
return.
(Note that if you call this method on a SoupSessionAsync, it will still use asynchronous I/O internally, running the glib main loop to process the message, which may also cause other events to be processed.)
Contrast this method with soup_session_send()
, which also
synchronously sends a message, but returns before reading the
response body, and allows you to read the response via a
GInputStream.
soup_session_cancel_message ()
void soup_session_cancel_message (SoupSession *session
,SoupMessage *msg
,guint status_code
);
Causes session
to immediately finish processing msg
(regardless
of its current state) with a final status_code of status_code
. You
may call this at any time after handing msg
off to session
; if
session
has started sending the request but has not yet received
the complete response, then it will close the request's connection.
Note that with requests that have side effects (eg,
POST
, PUT
,
DELETE
) it is possible that you might cancel the
request after the server acts on it, but before it returns a
response, leaving the remote resource in an unknown state.
If the message is cancelled while its response body is being read,
then the response body in msg
will be left partially-filled-in.
The response headers, on the other hand, will always be either
empty or complete.
Beware that with the deprecated SoupSessionAsync, messages queued
with soup_session_queue_message()
will have their callbacks invoked
before soup_session_cancel_message()
returns. The plain
SoupSession does not have this behavior; cancelling an
asynchronous message will merely queue its callback to be run after
returning to the main loop.
Parameters
session |
||
msg |
the message to cancel |
|
status_code |
status code to set on |
soup_session_send ()
GInputStream * soup_session_send (SoupSession *session
,SoupMessage *msg
,GCancellable *cancellable
,GError **error
);
Synchronously sends msg
and waits for the beginning of a response.
On success, a GInputStream will be returned which you can use to
read the response body. ("Success" here means only that an HTTP
response was received and understood; it does not necessarily mean
that a 2xx class status code was received.)
If non-NULL
, cancellable
can be used to cancel the request;
soup_session_send()
will return a G_IO_ERROR_CANCELLED
error. Note
that with requests that have side effects (eg,
POST
, PUT
,
DELETE
) it is possible that you might cancel the
request after the server acts on it, but before it returns a
response, leaving the remote resource in an unknown state.
If msg
is requeued due to a redirect or authentication, the
initial (3xx/401/407) response body will be suppressed, and
soup_session_send()
will only return once a final response has been
received.
Contrast this method with soup_session_send_message()
, which also
synchronously sends a SoupMessage, but doesn't return until the
response has been completely read.
(Note that this method cannot be called on the deprecated SoupSessionAsync subclass.)
Since 2.42
soup_session_send_async ()
void soup_session_send_async (SoupSession *session
,SoupMessage *msg
,GCancellable *cancellable
,GAsyncReadyCallback callback
,gpointer user_data
);
Asynchronously sends msg
and waits for the beginning of a
response. When callback
is called, then either msg
has been sent,
and its response headers received, or else an error has occurred.
Call soup_session_send_finish()
to get a GInputStream for reading
the response body.
See soup_session_send()
for more details on the general semantics.
Contrast this method with soup_session_queue_message()
, which also
asynchronously sends a SoupMessage, but doesn't invoke its
callback until the response has been completely read.
(Note that this method cannot be called on the deprecated SoupSessionSync subclass, and can only be called on SoupSessionAsync if you have set the “use-thread-context” property.)
Parameters
session |
||
msg |
||
cancellable |
a GCancellable |
|
callback |
the callback to invoke |
|
user_data |
data for |
Since 2.42
soup_session_send_finish ()
GInputStream * soup_session_send_finish (SoupSession *session
,GAsyncResult *result
,GError **error
);
Gets the response to a soup_session_send_async()
call and (if
successful), returns a GInputStream that can be used to read the
response body.
Since 2.42
soup_session_prefetch_dns ()
void soup_session_prefetch_dns (SoupSession *session
,const char *hostname
,GCancellable *cancellable
,SoupAddressCallback callback
,gpointer user_data
);
Tells session
that an URI from the given hostname
may be requested
shortly, and so the session can try to prepare by resolving the
domain name in advance, in order to work more quickly once the URI
is actually requested.
If cancellable
is non-NULL
, it can be used to cancel the
resolution. callback
will still be invoked in this case, with a
status of SOUP_STATUS_CANCELLED
.
Parameters
Since 2.38
soup_session_prepare_for_uri ()
void soup_session_prepare_for_uri (SoupSession *session
,SoupURI *uri
);
soup_session_prepare_for_uri
has been deprecated since version 2.38 and should not be used in newly-written code.
use soup_session_prefetch_dns()
instead
Tells session
that uri
may be requested shortly, and so the
session can try to prepare (resolving the domain name, obtaining
proxy address, etc.) in order to work more quickly once the URI is
actually requested.
Since 2.30
soup_session_abort ()
void
soup_session_abort (SoupSession *session
);
Cancels all pending requests in session
and closes all idle
persistent connections.
The message cancellation has the same semantics as with
soup_session_cancel_message()
; asynchronous requests on a
SoupSessionAsync will have their callback called before
soup_session_abort()
returns. Requests on a plain SoupSession will
not.
soup_session_would_redirect ()
gboolean soup_session_would_redirect (SoupSession *session
,SoupMessage *msg
);
Checks if msg
contains a response that would cause session
to
redirect it to a new URL (ignoring msg
's SOUP_MESSAGE_NO_REDIRECT
flag, and the number of times it has already been redirected).
Since 2.38
soup_session_redirect_message ()
gboolean soup_session_redirect_message (SoupSession *session
,SoupMessage *msg
);
Updates msg
's URI according to its status code and "Location"
header, and requeues it on session
. Use this when you have set
SOUP_MESSAGE_NO_REDIRECT
on a message, but have decided to allow a
particular redirection to occur, or if you want to allow a
redirection that SoupSession will not perform automatically (eg,
redirecting a non-safe method such as DELETE).
If msg
's status code indicates that it should be retried as a GET
request, then msg
will be modified accordingly.
If msg
has already been redirected too many times, this will
cause it to fail with SOUP_STATUS_TOO_MANY_REDIRECTS
.
Returns
TRUE
if a redirection was applied, FALSE
if not
(eg, because there was no Location header, or it could not be
parsed).
Since 2.38
soup_session_pause_message ()
void soup_session_pause_message (SoupSession *session
,SoupMessage *msg
);
Pauses HTTP I/O on msg
. Call soup_session_unpause_message()
to
resume I/O.
This may only be called for asynchronous messages (those sent on a
SoupSessionAsync or using soup_session_queue_message()
).
soup_session_unpause_message ()
void soup_session_unpause_message (SoupSession *session
,SoupMessage *msg
);
Resumes HTTP I/O on msg
. Use this to resume after calling
soup_session_pause_message()
.
If msg
is being sent via blocking I/O, this will resume reading or
writing immediately. If msg
is using non-blocking I/O, then
reading or writing won't resume until you return to the main loop.
This may only be called for asynchronous messages (those sent on a
SoupSessionAsync or using soup_session_queue_message()
).
soup_session_get_async_context ()
GMainContext *
soup_session_get_async_context (SoupSession *session
);
Gets session
's “async-context”. This does not add a ref
to the context, so you will need to ref it yourself if you want it
to outlive its session.
For a modern SoupSession, this will always just return the thread-default GMainContext, and so is not especially useful.
soup_session_add_feature ()
void soup_session_add_feature (SoupSession *session
,SoupSessionFeature *feature
);
Adds feature
's functionality to session
. You can also add a
feature to the session at construct time by using the
SOUP_SESSION_ADD_FEATURE
property.
Note that a SoupContentDecoder is added to the session by default (unless you are using one of the deprecated session subclasses).
Since 2.24
soup_session_add_feature_by_type ()
void soup_session_add_feature_by_type (SoupSession *session
,GType feature_type
);
If feature_type
is the type of a class that implements
SoupSessionFeature, this creates a new feature of that type and
adds it to session
as with soup_session_add_feature()
. You can use
this when you don't need to customize the new feature in any way.
If feature_type
is not a SoupSessionFeature type, this gives each
existing feature on session
the chance to accept feature_type
as
a "subfeature". This can be used to add new SoupAuth or
SoupRequest types, for instance.
You can also add a feature to the session at construct time by
using the SOUP_SESSION_ADD_FEATURE_BY_TYPE
property.
Note that a SoupContentDecoder is added to the session by default (unless you are using one of the deprecated session subclasses).
Since 2.24
soup_session_remove_feature ()
void soup_session_remove_feature (SoupSession *session
,SoupSessionFeature *feature
);
Removes feature
's functionality from session
.
Since 2.24
soup_session_remove_feature_by_type ()
void soup_session_remove_feature_by_type (SoupSession *session
,GType feature_type
);
Removes all features of type feature_type
(or any subclass of
feature_type
) from session
. You can also remove standard features
from the session at construct time by using the
SOUP_SESSION_REMOVE_FEATURE_BY_TYPE
property.
Since 2.24
soup_session_get_features ()
GSList * soup_session_get_features (SoupSession *session
,GType feature_type
);
Generates a list of session
's features of type feature_type
. (If
you want to see all features, you can pass SOUP_TYPE_SESSION_FEATURE
for feature_type
.)
Returns
a list of features. You must free the list, but not its contents.
[transfer container][element-type Soup.SessionFeature]
Since 2.26
soup_session_get_feature ()
SoupSessionFeature * soup_session_get_feature (SoupSession *session
,GType feature_type
);
Gets the first feature in session
of type feature_type
. For
features where there may be more than one feature of a given type,
use soup_session_get_features()
.
Since 2.26
soup_session_get_feature_for_message ()
SoupSessionFeature * soup_session_get_feature_for_message (SoupSession *session
,GType feature_type
,SoupMessage *msg
);
Gets the first feature in session
of type feature_type
, provided
that it is not disabled for msg
. As with
soup_session_get_feature()
, this should only be used for features
where feature_type
is only expected to match a single feature. In
particular, if there are two matching features, and the first is
disabled on msg
, and the second is not, then this will return
NULL
, not the second feature.
Since 2.28
soup_session_has_feature ()
gboolean soup_session_has_feature (SoupSession *session
,GType feature_type
);
Tests if session
has at a feature of type feature_type
(which can
be the type of either a SoupSessionFeature, or else a subtype of
some class managed by another feature, such as SoupAuth or
SoupRequest).
Since 2.42
Types and Values
enum SoupRequestError
A SoupRequest error.
Members
the URI could not be parsed |
||
the URI scheme is not supported by this SoupSession |
||
the server's response could not be parsed |
||
the server's response was in an unsupported format |
Since 2.42
SOUP_REQUEST_ERROR
#define SOUP_REQUEST_ERROR soup_request_error_quark ()
A GError domain for SoupRequest-related errors. Used with SoupRequestError.
Since 2.42
SOUP_SESSION_PROXY_URI
#define SOUP_SESSION_PROXY_URI "proxy-uri"
Alias for the “proxy-uri” property, qv.
SOUP_SESSION_PROXY_RESOLVER
#define SOUP_SESSION_PROXY_RESOLVER "proxy-resolver"
Alias for the “proxy-resolver” property, qv.
SOUP_SESSION_MAX_CONNS
#define SOUP_SESSION_MAX_CONNS "max-conns"
Alias for the “max-conns” property, qv.
SOUP_SESSION_MAX_CONNS_PER_HOST
#define SOUP_SESSION_MAX_CONNS_PER_HOST "max-conns-per-host"
Alias for the “max-conns-per-host” property, qv.
SOUP_SESSION_TLS_DATABASE
#define SOUP_SESSION_TLS_DATABASE "tls-database"
Alias for the “tls-database” property, qv.
Since 2.38
SOUP_SESSION_SSL_USE_SYSTEM_CA_FILE
#define SOUP_SESSION_SSL_USE_SYSTEM_CA_FILE "ssl-use-system-ca-file"
Alias for the “ssl-use-system-ca-file” property, qv.
Since 2.38
SOUP_SESSION_SSL_CA_FILE
#define SOUP_SESSION_SSL_CA_FILE "ssl-ca-file"
Alias for the “ssl-ca-file” property, qv.
SOUP_SESSION_SSL_STRICT
#define SOUP_SESSION_SSL_STRICT "ssl-strict"
Alias for the “ssl-strict” property, qv.
Since 2.30
SOUP_SESSION_ASYNC_CONTEXT
#define SOUP_SESSION_ASYNC_CONTEXT "async-context"
Alias for the “async-context” property, qv.
SOUP_SESSION_USE_THREAD_CONTEXT
#define SOUP_SESSION_USE_THREAD_CONTEXT "use-thread-context"
Alias for the “use-thread-context” property, qv.
Since 2.38
SOUP_SESSION_IDLE_TIMEOUT
#define SOUP_SESSION_IDLE_TIMEOUT "idle-timeout"
Alias for the “idle-timeout” property, qv.
Since 2.24
SOUP_SESSION_USER_AGENT
#define SOUP_SESSION_USER_AGENT "user-agent"
Alias for the “user-agent” property, qv.
SOUP_SESSION_ADD_FEATURE
#define SOUP_SESSION_ADD_FEATURE "add-feature"
Alias for the “add-feature” property, qv.
Since 2.24
SOUP_SESSION_ADD_FEATURE_BY_TYPE
#define SOUP_SESSION_ADD_FEATURE_BY_TYPE "add-feature-by-type"
Alias for the “add-feature-by-type” property, qv.
Since 2.24
SOUP_SESSION_REMOVE_FEATURE_BY_TYPE
#define SOUP_SESSION_REMOVE_FEATURE_BY_TYPE "remove-feature-by-type"
Alias for the “remove-feature-by-type” property, qv.
Since 2.24
SOUP_SESSION_ACCEPT_LANGUAGE
#define SOUP_SESSION_ACCEPT_LANGUAGE "accept-language"
Alias for the “accept-language” property, qv.
Since 2.30
SOUP_SESSION_ACCEPT_LANGUAGE_AUTO
#define SOUP_SESSION_ACCEPT_LANGUAGE_AUTO "accept-language-auto"
Alias for the “accept-language-auto” property, qv.
Since 2.30
SOUP_SESSION_HTTP_ALIASES
#define SOUP_SESSION_HTTP_ALIASES "http-aliases"
Alias for the “http-aliases” property, qv.
Since 2.38
SOUP_SESSION_HTTPS_ALIASES
#define SOUP_SESSION_HTTPS_ALIASES "https-aliases"
Alias for the “https-aliases” property, qv.
Since 2.38
SOUP_SESSION_LOCAL_ADDRESS
#define SOUP_SESSION_LOCAL_ADDRESS "local-address"
Alias for the “local-address” property, qv.
Since 2.42
Property Details
The “accept-language”
property
“accept-language” gchar *
If non-NULL
, the value to use for the "Accept-Language" header
on SoupMessages sent from this session.
Setting this will disable “accept-language-auto”.
Flags: Read / Write
Default value: NULL
Since 2.30
The “accept-language-auto”
property
“accept-language-auto” gboolean
If TRUE
, SoupSession will automatically set the string
for the "Accept-Language" header on every SoupMessage
sent, based on the return value of g_get_language_names()
.
Setting this will override any previous value of “accept-language”.
Flags: Read / Write
Default value: FALSE
Since 2.30
The “add-feature”
property
“add-feature” SoupSessionFeature *
Add a feature object to the session. (Shortcut for calling
soup_session_add_feature()
.)
Flags: Read / Write
Since 2.24
The “add-feature-by-type”
property
“add-feature-by-type” GType *
Add a feature object of the given type to the session.
(Shortcut for calling soup_session_add_feature_by_type()
.)
Flags: Read / Write
Allowed values: GObject
Since 2.24
The “async-context”
property
“async-context” gpointer
The GMainContext that miscellaneous session-related asynchronous callbacks are invoked on. (Eg, setting “idle-timeout” will add a timeout source on this context.)
For a plain SoupSession, this property is always set to
the GMainContext that is the thread-default at the time
the session was created, and cannot be overridden. For the
deprecated SoupSession subclasses, the default value is
NULL
, meaning to use the global default GMainContext.
If “use-thread-context” is FALSE
, this context
will also be used for asynchronous HTTP I/O.
Flags: Read / Write / Construct Only
The “http-aliases”
property
“http-aliases” GStrv
A NULL
-terminated array of URI schemes that should be
considered to be aliases for "http". Eg, if this included
"dav"
, than a URI of
dav://example.com/path
would be treated
identically to http://example.com/path
.
In a plain SoupSession, the default value is NULL
,
meaning that only "http" is recognized as meaning "http".
In SoupSessionAsync and SoupSessionSync, for backward
compatibility, the default value is an array containing the
single element "*"
, a special value
which means that any scheme except "https" is considered to
be an alias for "http".
See also “https-aliases”.
Flags: Read / Write
Since 2.38
The “https-aliases”
property
“https-aliases” GStrv
A comma-delimited list of URI schemes that should be considered to be aliases for "https". See “http-aliases” for more information.
The default value is NULL
, meaning that no URI schemes
are considered aliases for "https".
Flags: Read / Write
Since 2.38
The “idle-timeout”
property
“idle-timeout” guint
Connection lifetime (in seconds) when idle. Any connection left idle longer than this will be closed.
Although you can change this property at any time, it will
only affect newly-created connections, not currently-open
ones. You can call soup_session_abort()
after setting this
if you want to ensure that all future connections will have
this timeout value.
Note that the default value of 60 seconds only applies to plain SoupSessions. If you are using SoupSessionAsync or SoupSessionSync, the default value is 0 (meaning idle connections will never time out).
Flags: Read / Write
Default value: 60
Since 2.24
The “local-address”
property
“local-address” SoupAddress *
Sets the SoupAddress to use for the client side of the connection.
Use this property if you want for instance to bind the local socket to a specific IP address.
Flags: Read / Write / Construct Only
Since 2.42
The “max-conns”
property
“max-conns” gint
The maximum number of connections that the session can open at once.
Flags: Read / Write
Allowed values: >= 1
Default value: 10
The “max-conns-per-host”
property
“max-conns-per-host” gint
The maximum number of connections that the session can open at once to a given host.
Flags: Read / Write
Allowed values: >= 1
Default value: 2
The “proxy-resolver”
property
“proxy-resolver” GProxyResolver *
A GProxyResolver to use with this session. Setting this will clear the “proxy-uri” property, and remove any SoupProxyURIResolver features that have been added to the session.
By default, in a plain SoupSession, this is set to the
default GProxyResolver, but you can set it to NULL
if you
don't want to use proxies, or set it to your own
GProxyResolver if you want to control what proxies get
used.
Flags: Read / Write
Since 2.42
The “proxy-uri”
property
“proxy-uri” SoupURI *
A proxy to use for all http and https requests in this session. Setting this will clear the “proxy-resolver” property, and remove any
SoupProxyURIResolver features that have beenadded to the session. Setting this property will also cancel all currently pending messages.
Note that SoupSession will normally handle looking up the user's proxy settings for you; you should only use “proxy-uri” if you need to override the user's normal proxy settings.
Also note that this proxy will be used for
all requests; even requests to
localhost
. If you need more control over
proxies, you can create a GSimpleProxyResolver and set the
“proxy-resolver” property.
Flags: Read / Write
The “remove-feature-by-type”
property
“remove-feature-by-type” GType *
Remove feature objects from the session. (Shortcut for
calling soup_session_remove_feature_by_type()
.)
Flags: Read / Write
Allowed values: GObject
Since 2.24
The “ssl-ca-file”
property
“ssl-ca-file” gchar *
File containing SSL CA certificates.
If the specified file does not exist or cannot be read, then libsoup will print a warning, and then behave as though it had read in a empty CA file, meaning that all SSL certificates will be considered invalid.
SoupSession:ssl-ca-file
is deprecated and should not be used in newly-written code.
use “ssl-use-system-ca-file”, or else “tls-database” with a GTlsFileDatabase (which allows you to do explicit error handling).
Flags: Read / Write
Default value: NULL
The “ssl-strict”
property
“ssl-strict” gboolean
Normally, if “tls-database” is set (including if
it was set via “ssl-use-system-ca-file” or
“ssl-ca-file”), then libsoup will reject any
certificate that is invalid (ie, expired) or that is not
signed by one of the given CA certificates, and the
SoupMessage will fail with the status
SOUP_STATUS_SSL_FAILED
.
If you set “ssl-strict” to FALSE
, then all
certificates will be accepted, and you will need to call
soup_message_get_https_status()
to distinguish valid from
invalid certificates. (This can be used, eg, if you want to
accept invalid certificates after giving some sort of
warning.)
For a plain SoupSession, if the session has no CA file or
TLS database, and this property is TRUE
, then all
certificates will be rejected. However, beware that the
deprecated SoupSession subclasses (SoupSessionAsync and
SoupSessionSync) have the opposite behavior: if there is
no CA file or TLS database, then all certificates are always
accepted, and this property has no effect.
Flags: Read / Write
Default value: TRUE
Since 2.30
The “ssl-use-system-ca-file”
property
“ssl-use-system-ca-file” gboolean
Setting this to TRUE
is equivalent to setting
“tls-database” to the default system CA database.
(and likewise, setting “tls-database” to the
default database by hand will cause this property to
become TRUE
).
Setting this to FALSE
(when it was previously TRUE
) will
clear the “tls-database” field.
See “ssl-strict” for more information on how https certificate validation is handled.
Note that the default value of TRUE
only applies to plain
SoupSessions. If you are using SoupSessionAsync or
SoupSessionSync, the default value is FALSE
, for backward
compatibility.
Flags: Read / Write
Default value: TRUE
Since 2.38
The “timeout”
property
“timeout” guint
The timeout (in seconds) for socket I/O operations (including connecting to a server, and waiting for a reply to an HTTP request).
Although you can change this property at any time, it will
only affect newly-created connections, not currently-open
ones. You can call soup_session_abort()
after setting this
if you want to ensure that all future connections will have
this timeout value.
Note that the default value of 60 seconds only applies to plain SoupSessions. If you are using SoupSessionAsync or SoupSessionSync, the default value is 0 (meaning socket I/O will not time out).
Not to be confused with “idle-timeout” (which is the length of time that idle persistent connections will be kept open).
Flags: Read / Write
Default value: 0
The “tls-database”
property
“tls-database” GTlsDatabase *
Sets the GTlsDatabase to use for validating SSL/TLS certificates.
Note that setting the “ssl-ca-file” or “ssl-use-system-ca-file” property will cause this property to be set to a GTlsDatabase corresponding to the indicated file or system default.
See “ssl-strict” for more information on how https certificate validation is handled.
If you are using a plain SoupSession then
“ssl-use-system-ca-file” will be TRUE
by
default, and so this property will be a copy of the system
CA database. If you are using SoupSessionAsync or
SoupSessionSync, this property will be NULL
by default.
Flags: Read / Write
Since 2.38
The “use-ntlm”
property
“use-ntlm” gboolean
Whether or not to use NTLM authentication.
SoupSession:use-ntlm
is deprecated and should not be used in newly-written code.
use soup_session_add_feature_by_type()
with
SOUP_TYPE_AUTH_NTLM.
Flags: Read / Write
Default value: FALSE
The “use-thread-context”
property
“use-thread-context” gboolean
If TRUE
(which it always is on a plain SoupSession),
asynchronous HTTP requests in this session will run in
whatever the thread-default GMainContext is at the time
they are started, rather than always occurring in
“async-context”.
Flags: Read / Write
Default value: FALSE
Since 2.38
The “user-agent”
property
“user-agent” gchar *
If non-NULL
, the value to use for the "User-Agent" header
on SoupMessages sent from this session.
RFC 2616 says: "The User-Agent request-header field contains information about the user agent originating the request. This is for statistical purposes, the tracing of protocol violations, and automated recognition of user agents for the sake of tailoring responses to avoid particular user agent limitations. User agents SHOULD include this field with requests."
The User-Agent header contains a list of one or more product tokens, separated by whitespace, with the most significant product token coming first. The tokens must be brief, ASCII, and mostly alphanumeric (although "-", "_", and "." are also allowed), and may optionally include a "/" followed by a version string. You may also put comments, enclosed in parentheses, between or after the tokens.
If you set a “user_agent” property that has trailing
whitespace, SoupSession will append its own product token
(eg, "libsoup/2.3.2
") to the end of the
header for you.
Flags: Read / Write
Default value: NULL
Signal Details
The “authenticate”
signal
void user_function (SoupSession *session, SoupMessage *msg, SoupAuth *auth, gboolean retrying, gpointer user_data)
Emitted when the session requires authentication. If
credentials are available call soup_auth_authenticate()
on
auth
. If these credentials fail, the signal will be
emitted again, with retrying
set to TRUE
, which will
continue until you return without calling
soup_auth_authenticate()
on auth
.
Note that this may be emitted before msg
's body has been
fully read.
If you call soup_session_pause_message()
on msg
before
returning, then you can authenticate auth
asynchronously
(as long as you g_object_ref()
it to make sure it doesn't
get destroyed), and then unpause msg
when you are ready
for it to continue.
Parameters
session |
the session |
|
msg |
the SoupMessage being sent |
|
auth |
the SoupAuth to authenticate |
|
retrying |
|
|
user_data |
user data set when the signal handler was connected. |
Flags: Run First
The “connection-created”
signal
void user_function (SoupSession *session, GObject *connection, gpointer user_data)
Emitted when a new connection is created. This is an internal signal intended only to be used for debugging purposes, and may go away in the future.
Parameters
session |
the SoupSession |
|
connection |
the connection |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run First
Since 2.30
The “request-queued”
signal
void user_function (SoupSession *session, SoupMessage *msg, gpointer user_data)
Emitted when a request is queued on session
. (Note that
"queued" doesn't just mean soup_session_queue_message()
;
soup_session_send_message()
implicitly queues the message
as well.)
When sending a request, first “request_queued” is emitted, indicating that the session has become aware of the request.
Once a connection is available to send the request on, the session emits “request_started”. Then, various SoupMessage signals are emitted as the message is processed. If the message is requeued, it will emit “restarted”, which will then be followed by another “request_started” and another set of SoupMessage signals when the message is re-sent.
Eventually, the message will emit “finished”.
Normally, this signals the completion of message
processing. However, it is possible that the application
will requeue the message from the "finished" handler (or
equivalently, from the soup_session_queue_message()
callback). In that case, the process will loop back to
“request_started”.
Eventually, a message will reach "finished" and not be requeued. At that point, the session will emit “request_unqueued” to indicate that it is done with the message.
To sum up: “request_queued” and “request_unqueued” are guaranteed to be emitted exactly once, but “request_started” and “finished” (and all of the other SoupMessage signals) may be invoked multiple times for a given message.
Parameters
session |
the session |
|
msg |
the request that was queued |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run First
Since 2.24
The “request-started”
signal
void user_function (SoupSession *session, SoupMessage *msg, SoupSocket *socket, gpointer user_data)
Emitted just before a request is sent. See “request_queued” for a detailed description of the message lifecycle within a session.
Parameters
session |
the session |
|
msg |
the request being sent |
|
socket |
the socket the request is being sent on |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run First
The “request-unqueued”
signal
void user_function (SoupSession *session, SoupMessage *msg, gpointer user_data)
Emitted when a request is removed from session
's queue,
indicating that session
is done with it. See
“request_queued” for a detailed description of the
message lifecycle within a session.
Parameters
session |
the session |
|
msg |
the request that was unqueued |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run First
Since 2.24
The “tunneling”
signal
void user_function (SoupSession *session, GObject *connection, gpointer user_data)
Emitted when an SSL tunnel is being created on a proxy connection. This is an internal signal intended only to be used for debugging purposes, and may go away in the future.
Parameters
session |
the SoupSession |
|
connection |
the connection |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run First
Since 2.30