aqHttp.CreateRequest Method

Applies to TestComplete 15.47, last modified on January 20, 2023

Description

Use the CreateRequest method to create an HTTP request specified by an HTTP verb. The method will return an aqHttpRequest object describing the created request.

Note: This method is similar to the Open method of the IWinHttpRequest interface.

Declaration

aqHttp.CreateRequest(Method, URL, User, Password)

Method [in]    Required    String    
URL [in]    Required    String    
User [in]    Optional    String    
Password [in]    Optional    String    
Result The aqHttpRequest object

Applies To

The method is applied to the following object:

Parameters

The method has the following parameters:

Method

An HTTP verb that defines the operation that the request will use. Must be uppercase (some servers ignore lowercase HTTP verbs).

The following verbs are supported:

  • GET

  • HEAD

  • POST

  • PUT

  • DELETE

  • OPTIONS

  • TRACE

  • PATCH

Tip: For the GET and POST operations, you can also use the CreateGetRequest and CreatePostRequest methods respectively.

URL

An absolute URL path to the resource, to which you want to send the request. Must include the protocol.

For example, https://smartbear.com or https://support.smartbear.com.

If the parameter does not include the protocol (for example, www.support.smartbear.com), the Send method of the created aqHttpRequest object will fail.

User

If the Basic authentication is used, the name of the user on whose behalf the request will be sent. See below.

Password

If the Basic authentication is used, the password of the user on whose behalf the request will be sent. See below.

Result Value

The aqHttpRequest object.

Remarks

  • If your target server uses the Basic authentication, pass the user name and password as the method parameters. However, TestComplete will not send the authentication information in the first request. According to the HTTP specification, before sending the authorization header, TestComplete should receive a 401 response (Access Denied). Then TestComplete will send the authentication.

    If your server requires preemptive authentication (that is, it expects the authorization header in each request) or if it responds with an unusual status code (like 400 or 403), TestComplete will not be able to send the request correctly. See the description of the aqHttp object to learn about possible workarounds.

  • If a URL, to which you send the request, includes a query parameter after the host name, put the escape character (/) before it:

    http://example.com/?param=value – Correct;
    http://example.com:8080?param=value – Incorrect (no slash)

    http://example.com:8080/?param=value – Correct;
    http://example.com:8080?param=value – Incorrect (no slash)

    http://example.com:8080/subpath?param=value – Correct (query parameters follow a resource, not the host)
    http://example.com:8080/subpath/?param=value – Also correct

Example

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
}

See Also

CreateGetRequest Method
CreatePostRequest Method
aqHttp Object

Highlight search results