Sample code for 30+ languages & platforms
Zig

Persist Cookies to XML Files and Auto Re-Send

See more HTTP Examples

Demonstrates how to persist incoming cookies to XML files and automatically re-send in subsesquent HTTP requests.

Chilkat Zig Downloads

Zig
const std = @import("std");
const chilkat = @import("chilkat");

pub fn main(init: std.process.Init) !void {
    const alloc = init.arena.allocator();

    // This example assumes the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    const http = try chilkat.Http.init();
    defer http.deinit();

    // To save cookies to XML files (per domain) in a specific
    // directory, set the CookieDir property (the directory must
    // already exist and be writeable by the caller).  Also,
    // set the SaveCookies property:
    http.setCookieDir("/cookieDir");
    http.setSaveCookies(true);

    // Any methods that do a GET, POST, etc. will save cookies
    // to the CookieDir:
    var html: [:0]const u8 = "";
    html = try http.quickGetStr(alloc, "https://www.paypal.com/");

    // After running this code, a "paypal_com.xml" file should appear
    // in /cookieDir.

    // It's content will look something like this:

    // <cookies>
    //     <cookie key=".paypal.com,/" v="0" secure="yes">
    //         <navcmd>_home-general</navcmd>
    //         <HttpOnly />
    //         <cwrClyrK4LoCV1fydGbAxiNL6iG>9cz...</cwrClyrK4LoCV1fydGbAxiNL6iG>
    //     </cookie>
    // </cookies>

    // To cause cached cookies to be sent with
    // subsequent HTTP requests, set the SendCookies
    // property = true.
    http.setSendCookies(true);

    // If another HTTP request is sent, the cookies should
    // be added:
    html = try http.quickGetStr(alloc, "https://www.paypal.com/");

    // Check the LastHeader property to see the MIME header
    // of the last HTTP request sent.
    // The "Cookie" header field should be present.
    std.debug.print("--- LastHeader ---\n", .{});
    std.debug.print("{s}\n", .{try http.getLastHeader(alloc)});
}