Synchronously send msg
.
This call will not return until the transfer is finished successfully or there is an unrecoverable error.
Unlike with queue_message, msg
is not freed upon
return.
(Note that if you call this method on a SessionAsync, 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 send, which also synchronously sends a message, but returns before reading the response body, and allows you to read the response via a InputStream.
Example: Basic soup request, sync:
public static int main (string[] args) {
// Create a session:
Soup.Session session = new Soup.Session ();
// Add a logger:
Soup.Logger logger = new Soup.Logger (Soup.LoggerLogLevel.MINIMAL, -1);
session.add_feature (logger);
// Send a request:
Soup.Message msg = new Soup.Message ("GET", "http://gnome.org/");
session.send_message (msg);
// Process the result:
msg.response_headers.foreach ((name, val) => {
print ("%s = %s\n", name, val);
});
print ("Status Code: %u\n", msg.status_code);
print ("Message length: %lld\n", msg.response_body.length);
print ("Data: \n%s\n", (string) msg.response_body.data);
return 0;
}
valac --pkg libsoup-2.4 basic-soup-request-get-sync.vala
this |
a Session |
msg |
the message to send |
the HTTP status code of the response |