Sample code for 30+ languages & platforms
Zig Requires Chilkat v11.0.0+

HTTP PUT JSON

See more HTTP Examples

Demonstrates how to send a JSON PUT and get the JSON response body.

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 req = try chilkat.HttpRequest.init();
    defer req.deinit();
    const http = try chilkat.Http.init();
    defer http.deinit();

    // The PUT request to be sent will look like this:

    // PUT /request HTTP/1.1
    // Content-Type: application/jsonrequest
    // Cookie: JSESSIONID=1234
    // Content-Encoding: identity
    // Host: json.penzance.org
    // Accept: application/jsonrequest
    // Accept-Encoding:
    // Content-Length: 72
    //
    // {"user":"doctoravatar@penzance.com","forecast":7,"t":"vlIj","zip":94089}

    // First, remove default header fields that would be automatically
    // sent.  (These headers are harmless, and shouldn't need to
    // be suppressed, but just in case...)
ERROR: Property not in the Zig package: Http.AcceptCharset
    http.ERROR("");
    http.setUserAgent("");
ERROR: Property not in the Zig package: Http.AcceptLanguage
    http.ERROR("");

    // Suppress the Accept-Encoding header by disallowing
    // a gzip response:
    http.setAllowGzip(false);

    // If a Cookie needs to be added...
    http.setRequestHeader("Cookie", "JSESSIONID=1234");

    // Add the Content-Encoding: identity header.
    http.setRequestHeader("Content-Encoding", "identity");

    // Modify the default "Accept" header:
    http.setAccept("application/jsonrequest");

    const json_text = "{\"user\":\"doctoravatar@penzance.com\",\"forecast\":7,\"t\":\"vlIj\",\"zip\":94089}";

    // IMPORTANT: Make sure to change the URL, JSON text,
    // and other data items to your own values.  The URL used
    // in this example will not actually work.

    const resp = try chilkat.HttpResponse.init();
    defer resp.deinit();
    http.httpStr("PUT", "http://json.penzance.org/request", json_text, "utf-8", "application/jsonrequest", resp) catch {
        std.debug.print("{s}\n", .{try http.getLastErrorText(alloc)});
        return;
    };

    std.debug.print("Response status code: {d}\n", .{resp.getStatusCode()});
    std.debug.print("Response JSON:\n", .{});
    std.debug.print("{s}\n", .{try resp.getBodyStr(alloc)});
}