GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
XH(1) User Commands XH(1)

xh - Friendly and fast tool for sending HTTP requests

xh [OPTIONS] <[METHOD] URL> [--] [REQUEST_ITEM]...

xh is a friendly and fast tool for sending HTTP requests.

It reimplements as much as possible of HTTPie's excellent design, with a focus on improved performance.

METHOD

The HTTP method to use. One of get, post, head, put, patch, delete, or options.
Optional. If omitted, a GET or a POST will be done depending on whether the request sends data.

URL

The URL to request. The scheme defaults to 'http://' unless --https is used.
A leading colon works as shorthand for localhost. :8000 is equivalent to localhost:8000, and :/path is equivalent to localhost/path.

REQUEST_ITEM...

Optional key-value pairs to be included in the request.
key==value to add a parameter to the URL
key=value to add a JSON field (--json) or form field (--form)
key=@value to add a JSON field (--json) or form field (--form) from a file.
key:=value to add a complex JSON value (e.g. `numbers:=[1,2,3]`)
key:=@value to add a complex JSON value (e.g. `numbers:=@data.json`) from a file.
key@filename to upload a file from filename (with --form)
@filename to use a file as the request body
header:value to add a header
header: to unset a header
header; to add a header with an empty value
A backslash can be used to escape special characters (e.g. weird\:key=value).
File uploads can take ';type=' and ';filename=' parameters to set the mimetype and filename, respectively. For example:
key@filename;type=text/html;filename=document.html

-j, --json

(default) Serialize data items from the command line as a JSON object

-f, --form

Serialize data items from the command line as form fields

-m, --multipart

Like --form, but force a multipart/form-data request even without files

-h, --headers

Print only the response headers, shortcut for --print=h

-b, --body

Print only the response body, Shortcut for --print=b

-v, --verbose

Print the whole request as well as the response

--all

Show any intermediary requests/responses while following redirects with --follow

-q, --quiet

Do not print to stdout or stderr

-S, --stream

Always stream the response body

-d, --download

Download the body to a file instead of printing it

-c, --continue

Resume an interrupted download. Requires --download and --output

--ignore-netrc

Do not use credentials from .netrc

--offline

Construct HTTP requests without sending them anywhere

--check-status

(default) Exit with an error status code if the server replies with an error.
The exit code will be 4 on 4xx (Client Error), 5 on 5xx (Server Error), or 3 on 3xx (Redirect) if --follow isn't set.
If stdout is redirected then a warning is written to stderr.

-F, --follow

Do follow redirects

--native-tls

Use the system TLS library instead of rustls (if enabled at compile time)

--https

Make HTTPS requests if not specified in the URL

-I, --ignore-stdin

Do not attempt to read stdin

--curl

Print a translation to a `curl` command.
For translating the other way, try https://curl2httpie.online/.

--curl-long

Use the long versions of curl's flags

--help

Prints help information

-V, --version

Prints version information

--pretty <STYLE>

Controls output processing [possible values: all, colors, format, none]

-s, --style <THEME>

Output coloring style [possible values: auto, solarized, monokai]

--response-charset <ENCODING>

Override the response encoding for terminal display purposes.
Example: `--response-charset=latin1`

--response-mime <MIME_TYPE>

Override the response mime type for coloring and formatting for the terminal
Example: `--response-mime=application/json`

-p, --print <FORMAT>

String specifying what the output should contain.
Use `H` and `B` for request header and body respectively, and `h` and `b` for response hader and body.
Example: `--print=Hb`

-P, --history-print <FORMAT>

The same as --print but applies only to intermediary requests/responses

-o, --output <FILE>

Save output to FILE instead of stdout

--session <FILE>

Create, or reuse and update a session.
Within a session, custom headers, auth credentials, as well as any cookies sent by the server persist between requests.

--session-read-only <FILE>

Create or read a session without updating it form the request/response exchange

-A, --auth-type <auth-type>

Specify the auth mechanism [possible values: basic, bearer, digest]

-a, --auth <USER[:PASS] | TOKEN>

Authenticate as USER with PASS or with TOKEN.
PASS will be prompted if missing. Use a trailing colon (i.e. `USER:`) to authenticate with just a username.
TOKEN is expected if `--auth-type=bearer`.

--max-redirects <NUM>

Number of redirects to follow, only respected if `follow` is set

--timeout <SEC>

Connection timeout of the request.
The default value is `0`, i.e., there is no timeout limit.

--proxy <PROTOCOL:URL>...

Use a proxy for a protocol. For example: `--proxy https:http://proxy.host:8080`.
PROTOCOL can be `http`, `https` or `all`.
If your proxy requires credentials, put them in the URL, like so: `--proxy http:socks5://user:password@proxy.host:8000`.
You can specify proxies for multiple protocols by repeating this option.
The environment variables `http_proxy` and `https_proxy` can also be used, but are completely ignored if --proxy is passed.

--verify <VERIFY>

If "no", skip SSL verification. If a file path, use it as a CA bundle.
Specifying a CA bundle will disable the system's built-in root certificates.
"false" instead of "no" also works. The default is "yes" ("true").

--cert <FILE>

Use a client side certificate for SSL

--cert-key <FILE>

A private key file to use with --cert.
Only necessary if the private key is not contained in the cert file.

--ssl <VERSION>

Force a particular TLS version.
"auto" or "ssl2.3" gives the default behavior of negotiating a version with the server. [possible values: auto, ssl2.3, tls1, tls1.1, tls1.2, tls1.3]

--http-version <VERSION>

HTTP version to use [possible values: 1, 1.0, 1.1, 2]

Each option can be reset with a --no-OPTION argument.

+native-tls

November 2021 xh 0.14.1

Search for    or go to Top of page |  Section 1 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.