HTTP Client

HTTP Client

The Http class provides features used for opening connections via the HTTP protocol. You can use it to make outgoing connections to other applications and services. This client is supplied by the Laravel framework and you can learn about all the possible features in the Laravel documentation article (opens new window).

# Basic Usage

To make requests, the PHP method will assocaite to the HTTP method, which supports get, post, patch, put, options and delete. The following is an example of a basic GET request to a URL. The returned result will contain a response object.

$response = Http::get('https://octobercms.com');

You can quickly and easily inspect the contents of a request by prefixing the method call with dd(). This will dump the contents of the request and terminate the execution.

Http::dd()->get('https://octobercms.com');

# Handling the Response

The response object will provide methods that can be used to inspect the response.

$result = Http::post('https://octobercms.com');
echo $result->body();                  // Outputs: <html><head><title>...
echo $result->status();                // Outputs: 200
echo $result->header('Content-Type');  // Outputs: text/html; charset=UTF-8

The object supports the following method calls.

Method NameReturn TypePurpose
body()stringGet the body of the response.
json($key)`arraymixed`
object()objectGet the JSON decoded body of the response as an object.
collect($key)CollectionGet the JSON decoded body of the response as a collection.
status()intGet the status code of the response.
ok()boolDetermine if the response code was "OK".
successful()boolDetermine if the request was successful.
redirect()boolDetermine if the response was a redirect.
failed()boolDetermine if the response indicates a client or server error occurred.
serverError()boolDetermine if the response indicates a server error occurred.
clientError()boolDetermine if the response indicates a client error occurred.
header($header)stringGet a header from the response.
headers()arrayGet the headers from the response.

# Sending Request Data

The post, put and patch methods support sending additional data with the request. By default the data is sent using application/json as the content type.

Http::post('https://octobercms.com', [
    'name' => 'Jeff'
]);

To send the data using the application/x-www-form-urlencoded content type instead, call the asForm method before making the request.

Http::asForm()->post('https://octobercms.com', [
    'name' => 'Jeff'
]);

Passing data when using a get request, the array will be included with the query string in the URL.

Http::get('https://octobercms.com', [
    'page' => '1'
]);

The withHeaders method can be used to include custom headers with the request.

Http::withHeaders([
    'Rest-Key' => '...'
])->post('https://octobercms.com', [
    'name' => 'Jeff'
]);

The withBasicAuth method is used to pass authentication credentials with the request.

Http::withBasicAuth('user', 'password')->post('https://octobercms.com', [
    'name' => 'Jeff'
]);

# Error Handling

The HTTP client treats all responses as valid, including errors, so to determine if an error occured you should check with the successful, failed, clientError, or serverError methods.

// Status code is >= 200 and < 300
$response->successful();

// Status code is >= 400
$response->failed();

// Response has a 400 level status code
$response->clientError();

// Response has a 500 level status code
$response->serverError();

You may also use the onError method to execute a callback if a client or server error occurs.

$response->onError(callable $callback);

# See Also