aqHttp Object

Applies to TestComplete 15.62, last modified on March 19, 2024

Description

Use the aqHttp object to create HTTP requests. You can then send the created requests by using their Send method.

The object is available in TestComplete by default.

Members

Remarks

  • The aqHttp object is based on the IWinHTTPRequest interface by Microsoft. Many of their methods and properties are similar.

  • In Python scripts, you can also create HTTP requests with the internal urllib or third-party requests package.

  • Currently, if your test computer connects to the Internet through the proxy server that requires you to specify the proxy address and port in the Internet Explorer settings (that is, uses the "transparent" method of authentication), you will not be able to send requests created with the aqHttp object methods.

  • The META tag is not supported. For instance, if the charset encoding of the response returned from your tested web server is set by the META tag, it will not be recognized, and TestComplete may convert and show the response body content incorrectly.

  • Please note that you need to include the "charset=utf-8" parameter in the "Content-Type" header for every request if you want to avoid "Invalid Request" errors from the server. Remember to modify your code accordingly by adding the correctly parametrized line. For example, it might look like this:

    aqHttpRequest.SetHeader("Content-Type", "application/json; charset=utf-8");

    The second parameter depends on your application and you may need to replace it with alternatives like: application/xml, application/x-www-form-urlencoded, or another one. Please ensure that this step is performed for each request you make.

Example

Send a GET Request

The example below demonstrates how you can use the aqHttp object to create an HTTP GET request and send it to get a response from the server. To work with the created request, the code uses the aqHttpRequest object. To work with the server response, the sample code uses the aqHttpResponse object:

JavaScript, JScript

function httpGetRequest()
{
  var address = "http://httpbin.org";

  // Create an aqHttpRequest object
  var aqHttpRequest = aqHttp.CreateGetRequest(address);

  // Send the request, get an aqHttpResponse object
  var aqHttpResponse = aqHttpRequest.Send();

  if (aqHttpResponse != null)
  {
    // Read the response data
    Log.Message(aqHttpResponse.AllHeaders); // All headers
    Log.Message(aqHttpResponse.GetHeader("Content-Type")); // A specific header
    Log.Message(aqHttpResponse.StatusCode); // A status code
    Log.Message(aqHttpResponse.StatusText); // A status text
    Log.Message(aqHttpResponse.Text); // A response body
    
    // Save the response body to a file and place it to the project folder
    aqHttpResponse.SaveToFile(Project.Path + "body.txt");
  }
}

Python

def httpGetRequest():
  address = "http://httpbin.org"

  # Create an aqHttpRequest object
  aqHttpRequest = aqHttp.CreateGetRequest(address)

  # Send the request, get an aqHttpResponse object
  aqHttpResponse = aqHttpRequest.Send()

  if aqHttpResponse != None:
    # Read the response data
    Log.Message(aqHttpResponse.AllHeaders) # All headers
    Log.Message(aqHttpResponse.GetHeader("Content-Type")) # A specific header
    Log.Message(aqHttpResponse.StatusCode) # A status code
    Log.Message(aqHttpResponse.StatusText) # A status text
    Log.Message(aqHttpResponse.Text) # A response body
    
    # Save the response body to a file and place it to the project folder
    aqHttpResponse.SaveToFile(Project.Path + "body.txt")

VBScript

Sub httpGetRequest
  Dim address, aqHttpRequest, aqHttpResponse
  address = "http://httpbin.org"

  ' Create an aqHttpRequest object
  Set aqHttpRequest = aqHttp.CreateGetRequest(address)

  ' Send the request, get an aqHttpResponse object
  Set aqHttpResponse = aqHttpRequest.Send()

  If Not aqHttpResponse Is Nothing Then
    ' Read the response data
    Log.Message(aqHttpResponse.AllHeaders) ' All headers
    Log.Message(aqHttpResponse.GetHeader("Content-Type")) ' A specific header
    Log.Message(aqHttpResponse.StatusCode) ' A status code
    Log.Message(aqHttpResponse.StatusText) ' A status text
    Log.Message(aqHttpResponse.Text) ' A response body

    ' Save the response body to a file and place it to the project folder
    aqHttpResponse.SaveToFile(Project.Path & "body.txt")
  End If
End Sub

DelphiScript

function httpGetRequest;
var address, aqHttpRequest, aqHttpResponse;
begin
  
  address := 'http://httpbin.org';

  // Create an aqHttpRequest object
  aqHttpRequest := aqHttp.CreateGetRequest(address);

  // Send the request, get an aqHttpResponse object
  aqHttpResponse := aqHttpRequest.Send();

  if aqHttpResponse <> nil then
    begin
    // Read the response data
    Log.Message(aqHttpResponse.AllHeaders); // All headers
    Log.Message(aqHttpResponse.GetHeader('Content-Type')); // A specific header
    Log.Message(aqHttpResponse.StatusCode); // A status code
    Log.Message(aqHttpResponse.StatusText); // A status text
    Log.Message(aqHttpResponse.Text); // A response body

    // Save the response body to a file and place it to the project folder
    aqHttpResponse.SaveToFile(Project.Path + 'body.txt');
  end;
end;

C++Script, C#Script

function httpGetRequest()
{
  var address = "http://httpbin.org";

  // Create an aqHttpRequest object
  var aqHttpRequest = aqHttp["CreateGetRequest"](address);

  // Send the request, get an aqHttpResponse object
  var aqHttpResponse = aqHttpRequest["Send"]();

  if (aqHttpResponse != null)
  {
    // Read the response data
    Log["Message"](aqHttpResponse["AllHeaders"]); // All headers
    Log["Message"](aqHttpResponse["GetHeader"]("Content-Type")); // A specific header
    Log["Message"](aqHttpResponse["StatusCode"]); // A status code
    Log["Message"](aqHttpResponse["StatusText"]); // A status text
    Log["Message"](aqHttpResponse["Text"]); // A response body
    
    // Save the response body to a file and place it to the project folder
    aqHttpResponse["SaveToFile"](Project["Path"] + "body.txt");
  }
}

Send a POST Request

The example below demonstrates how you can use the aqHttp object to create an HTTP POST request that sends user authentication information to a server.

JavaScript, JScript

function httpPostRequest()
{
  var address = "http://petstore.swagger.io/v2/pet";
  var username = "Smith, John";
  var password = "P@55W0RD";
  
  // Define the request body JSON string
  var requestBody = '{ "id": 23, "category": { "id": 5, "name": "dogs"}, "name": "fido"}';
  
  // Create the aqHttpRequest object
  var aqHttpRequest = aqHttp.CreatePostRequest(address, username, password);

  // Specify the Content-Type header value
  aqHttpRequest.SetHeader("Content-Type", "application/json");

  // Send the request, create the aqHttpResponse object
  var aqHttpResponse = aqHttpRequest.Send(requestBody)
  

  // Check the response:
  Log.Message(aqHttpResponse.StatusCode); // A status code
  Log.Message(aqHttpResponse.Text); // A body
}

Python

def httpPostRequest():
  address = "http://petstore.swagger.io/v2/pet"
  username = "Smith, John"
  password = "P@55W0RD"
  
  # Define the request body JSON string
  requestBody = '{ "id": 23, "category": { "id": 5, "name": "dogs"}, "name": "fido"}'
  
  # Create the aqHttpRequest object
  aqHttpRequest = aqHttp.CreatePostRequest(address, username, password)

  # Specify the Content-Type header value
  aqHttpRequest.SetHeader("Content-Type", "application/json")

  # Send the request, create the aqHttpResponse object
  aqHttpResponse = aqHttpRequest.Send(requestBody)
  
  # Check the response:
  Log.Message(aqHttpResponse.StatusCode) # A status code
  Log.Message(aqHttpResponse.Text) # A body

VBScript

Sub httpPostRequest
  Dim address, username, password, requestbody, aqHttpRequest, aqHttpResponse
  address = "http://petstore.swagger.io/v2/pet"
  username = "Smith, John"
  password = "P@55W0RD"
  
  ' Define the request body JSON string
  requestBody = "{ ""id"": 23, ""category"": { ""id"": 5, ""name"": ""dogs""}, ""name"": ""fido""}"
  
  ' Create the aqHttpRequest object
  Set aqHttpRequest = aqHttp.CreatePostRequest(address, username, password)

  ' Specify the Content-Type header value
  Call aqHttpRequest.SetHeader("Content-Type", "application/json")
  
  ' Send the request, create the aqHttpResponse object
  Set aqHttpResponse = aqHttpRequest.Send(requestBody)
  
  ' Check the response:
  Log.Message(aqHttpResponse.StatusCode) ' A status code
  Log.Message(aqHttpResponse.Text) ' A body
End Sub

DelphiScript

function httpPostRequest;
var address, username, password, requestBody, aqHttpRequest, aqHttpResponse;
begin

  address := 'http://petstore.swagger.io/v2/pet';
  username := 'Smith, John';
  password := 'P@55W0RD';
  
  // Define the request body JSON string
  requestBody := '{ "id": 23, "category": { "id": 5, "name": "dogs"}, "name": "fido"}';
  
  // Create the aqHttpRequest object
  aqHttpRequest := aqHttp.CreatePostRequest(address, username, password);

  // Specify the Content-Type header value
  aqHttpRequest.SetHeader('Content-Type', 'application/json');

  // Send the request, create the aqHttpResponse object
  aqHttpResponse := aqHttpRequest.Send(requestBody);
  
  // Check the response:
  Log.Message(aqHttpResponse.StatusCode); // A status code
  Log.Message(aqHttpResponse.Text); // A body

end;

C++Script, C#Script

function httpPostRequest()
{
  var address = "http://petstore.swagger.io/v2/pet";
  var username = "Smith, John";
  var password = "P@55W0RD";
  
  // Define the request body JSON string
  requestBody = '{ "id": 23, "category": { "id": 5, "name": "dogs"}, "name": "fido"}';
  
  // Create the aqHttpRequest object
  var aqHttpRequest = aqHttp["CreatePostRequest"](address, username, password);

  // Specify the Content-Type header value
  aqHttpRequest["SetHeader"]("Content-Type", "application/json");

  // Send the request, create the aqHttpResponse object
  var aqHttpResponse = aqHttpRequest["Send"](requestBody);
  
  // Check the response:
  Log["Message"](aqHttpResponse["StatusCode"]); // A status code
  Log["Message"](aqHttpResponse["Text"]); // A body
}

Send a PUT Request

The example below demonstrates how you can use the aqHttp object to create a HTTP PUT request that contains information in the XML format and send the request to a server.

JavaScript, JScript

function httpRequest()
{
  var address = "http://petstore.swagger.io/v2/pet";
  
  // Specify the request body XML string
  var requestBody = "<Pet><id>23</id><name>Rex</name></Pet>";
  
  // You can also read the needed information from a file:
  // var requestBody = aqFile.ReadWholeTextFile("C:\\Work\\pet.xml", aqFile.ctANSI)
  
  // Create the aqHttpRequest object
  var aqHttpRequest = aqHttp.CreateRequest("PUT", address);
  
  // Specify the Content-Type header value
  aqHttpRequest.SetHeader("Content-Type", "application/xml");
  
  // Send the request, create the aqHttpResponse object
  var aqHttpResponse = aqHttpRequest.Send(requestBody);
  
  // Check the response:
  Log.Message(aqHttpResponse.StatusCode); // A status code
  Log.Message(aqHttpResponse.Text); // A body
}

Python

def httpRequest():
  address = "http://petstore.swagger.io/v2/pet"
  
  # Specify the request body XML string
  requestBody = "<Pet><id>23</id><name>Rex</name></Pet>"
  
  # You can also read the needed information from a file:
  # requestBody = aqFile.ReadWholeTextFile("C:\\Work\\pet.xml", aqFile.ctANSI)
  
  # Create the aqHttpRequest object
  aqHttpRequest = aqHttp.CreateRequest("PUT", address)

  # Specify the Content-Type header value
  aqHttpRequest.SetHeader("Content-Type", "application/xml")
  
  # Send the request, create the aqHttpResponse object
  aqHttpResponse = aqHttpRequest.Send(requestBody)
  
  # Check the response:
  Log.Message(aqHttpResponse.StatusCode) # A status code
  Log.Message(aqHttpResponse.Text) # A body

VBScript

Sub httpRequest
  Dim address, requestBody, aqHttpRequest, aqHttpResponse
  address = "http://petstore.swagger.io/v2/pet"
  
  ' Specify the request body XML string
  requestBody = "<Pet><id>23</id><name>Rex</name></Pet>"
  
  ' You can also read the needed information from a file:
  ' requestBody = aqFile.ReadWholeTextFile("C:\\Work\\pet.xml", aqFile.ctANSI)
    
  ' Create the aqHttpRequest object
  Set aqHttpRequest = aqHttp.CreateRequest("PUT", address)

  ' Specify the Content-Type header value
  Call aqHttpRequest.SetHeader("Content-Type", "application/xml")
  
  ' Send the request, create the aqHttpResponse object
  Set aqHttpResponse = aqHttpRequest.Send(requestBody)
  
  ' Check the response:
  Log.Message(aqHttpResponse.StatusCode) ' A status code
  Log.Message(aqHttpResponse.Text) ' A body
End Sub

DelphiScript

function httpRequest;
var address, requestBody, aqHttpRequest, aqHttpResponse;
begin
  
  address := 'http://petstore.swagger.io/v2/pet';
  
  // Specify the request body XML string
  requestBody := '<Pet><id>23</id><name>Rex</name></Pet>';
  
  // You can also read the needed information from a file:
  // requestBody := aqFile.ReadWholeTextFile('C:\\Work\\pet.xml', aqFile.ctANSI)
  
  // Create the aqHttpRequest object
  aqHttpRequest := aqHttp.CreateRequest('PUT', address);

  // Specify the Content-Type header value
  aqHttpRequest.SetHeader('Content-Type', 'application/xml');
  
  // Send the request, create the aqHttpResponse object
  aqHttpResponse := aqHttpRequest.Send(requestBody);
  
  // Check the response:
  Log.Message(aqHttpResponse.StatusCode); // A status code
  Log.Message(aqHttpResponse.Text); // A body

end;

C++Script, C#Script

function httpRequest()
{
  var address = "http://petstore.swagger.io/v2/pet";
  
  // Specify the XML request body XML string
  var requestBody = "<Pet><id>23</id><name>Rex</name></Pet>";
  
  // You can also read the needed information from a file:
  // var requestBody = aqFile["ReadWholeTextFile"]("C:\\Work\\pet.xml", aqFile.ctANSI)
  
  // Create the aqHttpRequest object
  var aqHttpRequest = aqHttp["CreateRequest"]("PUT", address);

  // Specify the Content-Type header value
  aqHttpRequest["SetHeader"]("Content-Type", "application/xml");
  
  // Send the request, create the aqHttpResponse object
  var aqHttpResponse = aqHttpRequest["Send"](requestBody);
  
  // Check the response:
  Log["Message"](aqHttpResponse["StatusCode"]); // A status code
  Log["Message"](aqHttpResponse["Text"]); // A body
}

Send a Request to a Server That Uses Preemptive Authentication

If your server requires preemptive authentication, you can use the SetHeader method to force the authorization header to appear in each request. Keep in mind that the user name and password values must be base64-encoded.

JavaScript, JScript

function httpAuthRequest()
{
  var address = "http://petstore.swagger.io/v2/store/inventory";
  var username = "Smith, John";
  var password = "P@55W0RD";
  
  // Convert the user credentials to base64 for preemptive authentication
  var credentials = aqConvert.VarToStr(dotNET.System.Convert.ToBase64String
    (dotNET.System_Text.Encoding.UTF8.GetBytes_2(username + ":" + password)));
  
  var aqHttpRequest = aqHttp.CreateGetRequest(address);
  // Send the Authorization header with a request
  aqHttpRequest.SetHeader("Authorization", "Basic " + credentials);
  
  var aqHttpResponse = aqHttpRequest.Send();
  
  // Log the status code of the response
  Log.Message(aqHttpResponse.StatusCode);
 // Log the text of the response
  Log.Message(aqHttpResponse.Text);
}

Python

import base64
def httpAuthRequest():
  address = "http://petstore.swagger.io/v2/store/inventory"
  username = "Smith, John"
  password = "P@55W0RD"
  
  # Convert the user credentials to base64 for preemptive authentication
  credentials = bytes(username + ":" + password, 'utf-8') # Convert a string to a bytes object
  # Simple base64 encoding
  credentials = base64.b64encode(credentials, altchars=None)
  # Decode the bytes object to a string to use it in the header
  credentials = credentials.decode("utf-8")
    
  aqHttpRequest = aqHttp.CreateGetRequest(address)
  # Send the Authorization header with a request
  aqHttpRequest.SetHeader("Authorization", "Basic " + credentials)
  
  aqHttpResponse = aqHttpRequest.Send()
  
  # Log the status code of the response
  Log.Message(aqHttpResponse.StatusCode)
  # Log the text of the response  Log.Message(aqHttpResponse.Text)

VBScript

Sub httpAuthRequest
  Dim address, requestBody, username, password, aqHttpRequest, aqHttpResponse
  
  address = "http://petstore.swagger.io/v2/store/inventory"
  username = "Smith, John"
  password = "P@55W0RD"
  
  ' Convert the user credentials to base64 for preemptive authentication
  credentials = aqConvert.VarToStr(dotNET.System.Convert.ToBase64String _
  (dotNET.System_Text.Encoding.UTF8.GetBytes_2(username + ":" + password)))
  
  Set aqHttpRequest = aqHttp.CreateGetRequest(address)
  ' Send the Authorization header with a request
  Call aqHttpRequest.SetHeader("Authorization", "Basic " + credentials)
  
  Set aqHttpResponse = aqHttpRequest.Send()
  
  ' Log the status code of the response
  Log.Message(aqHttpResponse.StatusCode)
  ' Log the text of the response
  Log.Message(aqHttpResponse.Text)
  
End Sub

DelphiScript

function httpAuthRequest;
var address, username, password, credentials, aqHttpRequest, aqHttpResponse;
begin

  address := 'http://petstore.swagger.io/v2/store/inventory';
  username := 'Smith, John';
  password := 'P@55W0RD';
  
  // Convert the user credentials to base64 for preemptive authentication
  credentials := aqConvert.VarToStr(dotNET.System.Convert.ToBase64String
    (dotNET.System_Text.Encoding.UTF8.GetBytes_2(username + ':' + password)));
  
  aqHttpRequest := aqHttp.CreateGetRequest(address);
  // Send the Authorization header with a request
  aqHttpRequest.SetHeader('Authorization', 'Basic ' + credentials);
  
  aqHttpResponse := aqHttpRequest.Send();
  
  // Log the status code of the response
  Log.Message(aqHttpResponse.StatusCode);
  // Log the text of the response
  Log.Message(aqHttpResponse.Text);
  
end;

C++Script, C#Script

function httpAuthRequest()
{
  var address = "http://petstore.swagger.io/v2/store/inventory";
  var username = "Smith, John";
  var password = "P@55W0RD";
  
  // Convert the user credentials to base64 for preemptive authentication
  var credentials = aqConvert["VarToStr"](dotNET["System"]["Convert"]["ToBase64String"]
   (dotNET["System_Text"]["Encoding"]["UTF8"]["GetBytes_2"](username + ":" + password)));
  
  var aqHttpRequest = aqHttp["CreateGetRequest"](address);
  // Send the Authorization header with a request
  aqHttpRequest["SetHeader"]("Authorization", "Basic " + credentials);
  
  var aqHttpResponse = aqHttpRequest["Send"]();
  
  // Log the status code of the response  Log["Message"](aqHttpResponse["StatusCode"]);
  // Log the text of the response
  Log["Message"](aqHttpResponse["Text"]);
}

See Also

aqHttpRequest Object
aqHttpResponse Object
aqHttpStatusCode Object

Highlight search results