Sample code for 30+ languages & platforms
Zig

WIN Air Freight Login POST Request

See more HTTP Misc Examples

Demonstrates the "login" POST method endpoint to obtain an initial authToken as a cookie. Each API request will return a fresh authToken cookie which must be passed back to WIN in the next API request.

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 HTTP API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

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

    // Set the "Accept" header to tell the web server that we'll accept an XML response.
    http.setAccept("application/xml");
    // Tell Chilkat to cache any received cookies to files in a particular directory
    http.setCookieDir("c:/qa_data/cookies");
    http.setSaveCookies(true);

    const xml = try chilkat.Xml.init();
    defer xml.deinit();
    xml.setTag("LogOnModel");
    xml.newChild2("UserName", "win-air-freight-user@company.com");
    xml.newChild2("Password", "win-air-freight-password");
    xml.setEmitXmlDecl(false);

    const http_request_body = try xml.getXml(alloc);
    const resp = try chilkat.HttpResponse.init();
    defer resp.deinit();
    http.httpStr("POST", "http://integration.winwebconnect.com/api/v1/Login", http_request_body, "utf-8", "application/xml", resp) catch {
        std.debug.print("{s}\n", .{try http.getLastErrorText(alloc)});
        return;
    };

    const xml_response = try chilkat.Xml.init();
    defer xml_response.deinit();
    xml_response.loadXml(try resp.getBodyStr(alloc)) catch {};

    // See below for an example XML response body.
    std.debug.print("Response Body:\n", .{});
    std.debug.print("{s}\n", .{try xml_response.getXml(alloc)});
    std.debug.print("---\n", .{});

    std.debug.print("Response Header:\n", .{});
    std.debug.print("{s}\n", .{try resp.getHeader(alloc)});

    // An example resp header:
    //
    //     Cache-Control: no-cache
    //     Pragma: no-cache
    //     Content-Length: 1671
    //     Content-Type: application/xml; charset=utf-8
    //     Expires: -1
    //     Set-Cookie: authToken=1467EC8A5D2F1390F89F9DB65AAAAB5C709D1AE7275B72B6DDBDA44C54AE5D5C19648F76AAB12C9D9E2690F0DD69BE6E1C0F6D725C9392E99E1904A6B76D7852948C01A49E2FF20914092843C062778B91EE7497DDF4C1AC4117110E414195C9726E3467BD98094437044A8E94F1BCA1; path=/; HttpOnly
    //     Access-Control-Allow-Origin: http://integration.winwebconnect.com
    //     Date: Mon, 21 Nov 2016 21:29:57 GMT
    std.debug.print("Success.\n", .{});

    // An example XML response body:
    // -----------------------------
    //     <?xml version="1.0" encoding="utf-8" ?>
    //     <AuthResponseDTO>
    //         <LastLogin>2016-11-21T21:29:58.229986Z</LastLogin>
    //         <UserDetails>
    //             <ContactID>16528</ContactID>
    //             <AgentID>96592</AgentID>
    //             <FirstName>System</FirstName>
    //             <LastName>User</LastName>
    //             <Email>test@company.com</Email>
    //             <JobTitle />
    //             <ContactNumber />
    //             <IsActivated>true</IsActivated>
    //             <OperatedBy />
    //             <AddressBookID />
    //             <Permissions>integrationapi</Permissions>
    //             <ContactType>Primary</ContactType>
    //             <UCTReferer />
    //             <UCTIsCaptcha>false</UCTIsCaptcha>
    //             <UATReferer />
    //             <UATIsCaptcha>false</UATIsCaptcha>
    //             <Username>test@company.com</Username>
    //         </UserDetails>
    //         <AgentDetails>
    //             <AgentID>96592</AgentID>
    //             <AgentName>My Company</AgentName>
    //             <AccountNumber />
    //             <IATACode />
    //             <Address1>P.O. Box 555</Address1>
    //             <Address2 />
    //             <Place />
    //             <StateProvince>NC</StateProvince>
    //             <City>
    //                 <Code>USBFO</Code>
    //                 <Name>Raleigh</Name>
    //             </City>
    //             <Country>
    //                 <Code>US</Code>
    //                 <Name>US - United States</Name>
    //             </Country>
    //             <ZipCode>28522</ZipCode>
    //             <Email />
    //             <Phone />
    //             <Fax />
    //             <IsEAirwayBill>false</IsEAirwayBill>
    //             <EYProgram>false</EYProgram>
    //             <WhiteLabelMobileApp>false</WhiteLabelMobileApp>
    //             <Limits>
    //                 <UCTSearchesRemaining />
    //                 <UATSearchesRemaining />
    //                 <AgentID>96592</AgentID>
    //             </Limits>
    //             <Permissions>integrationapi</Permissions>
    //         </AgentDetails>
    //         <UserPreferences>
    //             <AboutUs />
    //             <MOTD />
    //             <Language>en-US</Language>
    //             <Currency>USD</Currency>
    //             <UnitSystem>Metric</UnitSystem>
    //             <TimeZone>
    //                 <TheID>450</TheID>
    //                 <KeyIdentifier>TimeZone</KeyIdentifier>
    //                 <KeyValue>GMT</KeyValue>
    //                 <KeyDescription>(GMT-11:00)UTC-11</KeyDescription>
    //                 <IsDefault>false</IsDefault>
    //             </TimeZone>
    //             <DateFormat>dd-MMM-yyyy</DateFormat>
    //             <TimeFormat>h:mm t</TimeFormat>
    //             <Controls />
    //             <ContactEmail />
    //         </UserPreferences>
    //         <Version>
    //             <APIVersion>3.4.0.0ah8</APIVersion>
    //             <UIVersion>3.1</UIVersion>
    //         </Version>
    //         <NumNonMSDBContacts />
    //     </AuthResponseDTO>
    //
}