Skip to content
Build HTTP Clients easily with Perl 6
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


HTTP::Client -- Perl 6 library for building HTTP Clients

Inspired by LWP and HTTP::Client from Perl 5, and LWP::Simple
from Perl 6, this is a simple class for building HTTP clients 
using Perl 6.

It's not based on any of those when it comes to API, but instead
offers a flexible syntax that's easy to use, and easy to extend.

It currently only supports HTTP itself. HTTP+SSL (HTTPS) support
is planned for a future version.

= Usage =

A simple GET request, without an intermetiary Request object:

  my $client =;
  my $response = $client.get('');
  if ($response.success) {
    say $response.content;

A more advanced POST application/x-www-form-urlencoded request:

  my $client =;
  my $request = $; ## Note we are not setting the URI/URL.
  ## The following line creates Request variables called query and mode.
  ## You could also do $request.set-content('query=libwww-perl&mode=dist');
  ## But I think letting the library build your content for you, is nicer.
  $request.add-field(:query<libwww-perl>, :mode<dist>);
  my $response = $; ## or $client.request($request);

A more advanced POST multipart/form-data request:

  my $client =;
  my $request = $;
    :name("upload"),     :filename("file.txt"), 
    :type("text/plain"), :content("hello world...")
  my $response = $;

= Notes =

As seen above, there is no need to build HTTP::Client::Request objects
manually. Just use the appropriate method (get, post, head, put, delete)
or use $client.make-request($method); for methods that don't have methods

As it's name states, this library is specifically for HTTP Clients.
If you want something for building HTTP Servers, see HTTP::Easy.
If you want something for Request/Reponse objects for your Web Application, 
see WWW::App. Full disclosure: I wrote both of those libraries too.

= Requirements =

* Rakudo Perl 6      <>
* URI                <>
* MIME::Base64       <>

= Author =

Timothy Totten

= License =

Artistic License 2.0

Something went wrong with that request. Please try again.