This class represents an Http request, which is all the data that is going to be sent to a web server. It is mainly used for interaction with REST API.
When creating a new request, specify a URL as a parameter:
$request = new HttpRequest( "https://service.com/api" );
Properties
method
string. HTTP request method.
default value: "GET"
"GET" and "POST" are the methods used in most cases.
See additional info here:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods
$request->method = "POST";
url
string. The web page address. Should start with http:// or https://
May or may not include query parameters like
https://www.google.com?q=what+is+url
or
https://www.google.com
Code example:
$request->url = "https://www.api.com/api";
urlParams
Array. Parameters to be added to URL
Keys in the array are parameter names.
Values in the array are parameter values.
Neither keys nor values should be encoded for the web. Just specify them as they are.
$request->url = "https://www.api.com/api";
$request->urlParams["username"] = "my username";
$request->urlParams["password"] = "my password";
The resulting URI sent to the server will be:
https://www.api.com/api?username=my%20username&password=my%20password
headers
Array. HTTP headers to be added to the request
Keys in the array are header names.
Values in the array are header values.
Neither keys nor values should be encoded for the web.
Example:
// add Basic HTTP Authorization to the request
$request->headers["Authorization"] = "Basic " . base64_encode( $username . ':' .$password );
postPayload
Array. POST variables to be sent with the request
Keys in the array are parameter names.
Values in the array are parameter values.
Neither keys nor values should be encoded for the web.
$request->method = "POST";
$request->url = "https://www.api.com/api/cars/add";
$request->postPayload["make"] = "Tesla";
$request->postPayload["model"] = "Model 3";
postPayload parameter is completely ignored if body property is not null.
Notes:
POST values may be sent to the server in a number of ways. The HttpRequest class supports some of them. To make it use a specific format, specify the "Content-Type" header value. The following values are supported:
application/x-www-form-urlencoded - this is the most popular format. If your API receives data in POST requests and the manual says nothing about data format, this is it. HttpRequest class sends POST data in this format by default, and will add the Content-Type header itself if you don't specify it:
// this line is not necessary
$request->headers["Content-Type"] = "application/x-www-form-urlencoded";
$request->postPayload["make"] = "Tesla";
$request->postPayload["model"] = "Model 3";
application/json - when you API expects data in JSON format. If you specify Content-Type "application/json", the application will send the post data in JSON format.
multipart/form-data - another popular format. Set Content-Type header to "multipart/form-data" if your API requires it. The full format of Content-Type header also requires a "boundary" parameter, but you may omit it.
$request->headers["Content-Type"] = "multipart/form-data";
body
string. POST body to be sent with the request.
Default value: null
If body parameter is null, the application will use postPayload values to form request body.
Otherwise, if body has any other value, the postPayload property will be ignored, and body value will be sent in the request as is.
$request->body = "my custom request body";
// this line will be ignored
$request->postPayload["make"] = "Tesla";