Skip to content

HTTP API

Declared by <huxerui/http.h>.

  • HttpMethod: Get, Head, Post, Put, Patch, Delete, Options.
  • HttpHeader: name and value.
  • HttpRequest: URL, method (default GET), headers, body, and optional timeout (default 30 seconds; nullopt disables it).
  • HttpResponse: final URL, integer status code, headers, and body.

HttpErrorCode is Transport, Timeout, or Unsupported. HttpError contains code and message. HttpResult constructs from response/error, reports HasResponse, and provides ref-qualified Response() plus lvalue Error() accessors; asking for the wrong alternative throws.

Non-copyable root service. Send(HttpRequest) const -> Task<HttpResult>. Obtain it with UseService<HttpClient>(). Request cancellation follows the launched HuxerUI task execution.

#include <huxerui/huxerui.h>
using namespace huxerui;
Task<void> LoadStatus(State<std::string> output) {
auto http = UseService<HttpClient>();
HttpResult result = co_await http->Send({
.url = "https://example.com/status",
.method = HttpMethod::Get,
});
output = result.HasResponse() ? std::to_string(result.Response().status_code) : result.Error().message;
}

HTTP status codes are responses; transport, timeout, and unsupported-service failures use HttpError.