Home >>HTTP Tutorial >HTTP Requests
An HTTP client sends a request for HTTP to a server in the form of a request message including the following format:
HTTP Requests are messages sent by the client or user for the server to perform an action.
The message's first line contains the request message from the client to the server, the method applied to the resource, resource identifier and the protocol version.
Syntax
Request = Request-Line *(( general-header | request-header | entity-header ) CRLF) CRLF [ message-body ]
The Request-Line begins with a process token, followed by the Request-URI version of the protocol and ending with CRLF. The elements are separated using the characters SP.
Syntax
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
Let's discuss about any part mentioned in the Request-Line.
Request Method
The request method indicates the method to be used on the resource specified by the Request-URI in query. The method is case-sensitive and should be stated in uppercase at all times. The table below lists all the methods allowed under HTTP/1.1.
Sr No | Method and Description |
---|---|
1. | GET Using a given URI, the GET method is used to remember information from the given server. Applications using GET can only retrieve data and have no further impact on the data. |
2. | HEAD Same as GET but it just moves the line of status and the section of headers. |
3. | POST Using HTML types, for example, a POST request is used to send data to the server, customer information, file upload etc. |
4. | PUT Replaces all of the target resource 's existing representations by the material uploaded. |
5. | DELETE Removes all of the current target resource representations provided by URI. |
6. | OPTIONS Describe aim resource communication choices. |
7 | TRACE |
8. | CONNECT Sets up a tunnel identified by a given URI to the server. |
The Request-URI is an Uniform Resource Identifier, defining the resource to send the request to. The most commonly used forms for specifying a URI follow:
Request-URI = "*" | absoluteURI | abs_path | authority
Sr No | Method and Description |
---|---|
1. | The asterisk * is used when an HTTP request does not apply to a particular resource, but to the server itself, and is only allowed when the method used does not necessarily apply to a resource. For example: OPTIONS * HTTP/1.1 |
2. | The absoluteURI is used when creating an HTTP request to a proxy. The proxy is requested from a valid cache to forward the request or service, and return the response. Take , for example:GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1 |
3. | The most popular type of Request-URI is that used on an origin server or gateway to define a resource. A client wishing to access a resource directly from the origin server, for example, will build a TCP connect to port 80 of the "www.w3.org" host and send the following lines:GET /pub/WWW/TheProject.html HTTP/1.1
Host: www.w3.org Note that the absolute path cannot be empty; if none is present in the original URI, it MUST be given as "/" (the server root). |
In a separate chapter, we will study General-header and Entity-header when we learn the fields of HTTP headers. For now, let's verify which fields are Request header.
In case you want to write your own custom Client and Web Server, you can enter your custom fields.
Now let's bring it all together to form an HTTP request to fetch hello.htm from the phptpoint.com operating web server.
GET /hello.htm HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT) Host: www.tutorialspoint.com Accept-Language: en-us Accept-Encoding: gzip, deflate Connection: Keep-Alive
Here we do not send any request data to the server because we are downloading a server pure HTML file. Connection is a general-header, and the other headers are headers for requests. The example below shows how to send data from the form to the server using body of request message:
POST /cgi-bin/process.cgi HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT) Host: www.tutorialspoint.com Content-Type: application/x-www-form-urlencoded Content-Length: length Accept-Language: en-us Accept-Encoding: gzip, deflate Connection: Keep-Alive
licenseID=string&content=string&/paramsXML=string
Here the provided URL /cgi-bin / process.cgi is used to process the passed data, and a response is returned accordingly. Here content-type informs the server that the data passed is a basic data web form and length would be the actual length of the data placed into the body of the message. The example below shows how to migrate plain XML to your web server:
POST /cgi-bin/process.cgi HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT) Host: www.tutorialspoint.com Content-Type: text/xml; charset=utf-8 Content-Length: length Accept-Language: en-us Accept-Encoding: gzip, deflate Connection: Keep-Alive
<?xml version="1.0" encoding="utf-8"?> <string xmlns="http://clearforest.com/">string</string>