POST
Parses the supplied URL and makes a synchronous HTTP POST request with request. Prints obtained Response status, and data received from server.
Note: Since HTTP support is in early stage, it’s recommended to use libcurl for any complex task.
const std = @import("std"); const print = std.debug.print; const http = std.http; pub fn main() !void { var gpa = std.heap.GeneralPurposeAllocator(.{}){}; defer _ = gpa.deinit(); const allocator = gpa.allocator(); var client = http.Client{ .allocator = allocator }; defer client.deinit(); const uri = try std.Uri.parse("https://httpbin.org/anything"); var req = try client.request(.POST, uri, .{ .extra_headers = &.{.{ .name = "Content-Type", .value = "application/json" }}, }); defer req.deinit(); var payload: [7]u8 = "[1,2,3]".*; try req.sendBodyComplete(&payload); var buf: [1024]u8 = undefined; var response = try req.receiveHead(&buf); // Occasionally, httpbin might time out, so we disregard cases // where the response status is not okay. if (response.head.status != .ok) { return; } const body = try response.reader(&.{}).allocRemaining(allocator, .unlimited); defer allocator.free(body); print("Body:\n{s}\n", .{body}); }