public void @foreach (MessageHeadersForeachFunc func)

Calls func once for each header value in this.

Beware that unlike @get, this processes the headers in exactly the way they were added, rather than concatenating multiple same-named headers into a single value. (This is intentional; it ensures that if you call append multiple times with the same name, then the I/O code will output multiple copies of the header when sending the message to the remote implementation, which may be required for interoperability in some cases.)

You may not modify the headers from func.

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



a MessageHeaders


callback function to run for each header


data to pass to func