Applies to ReadyAPI 3.3.1, last modified on August 11, 2020

You can use Groovy scripts to modify headers of requests, as well as get headers from responses. This topic describes how to use a Groovy script to work with HTTP headers.

Add header to request

Availability

You can run this script as the RequestFilter.filterRequest event handler.

Example

The following code demonstrates how to add a custom HTTP header to requests from within the event handler:

Groovy

// Calling the request headers.
def headers = request.requestHeaders

// Creating the custom header.
headers.put( "X-tokenHeader", "value") // Replace values with those you need

// Adding the custom header to request headers.
request.requestHeaders = headers

Save header value to property

Availability

As a Groovy Script test step.

Example

The following code demonstrates how to save a header value to a test case property:

Groovy

// Replace names of a test step and property with those you need

//Get the header value
def headerValue = testRunner.testCase.getTestStepByName("CreatePartner").httpRequest.response.responseHeaders["Location"]

// Save the value to a test case property
testRunner.testCase.setPropertyValue( "MyHeader", headerValue.toString() )

Add hashed authentication header

Availability

You can run this script as the RequestFilter.filterRequest event handler.

Example

The following code demonstrates how to add an authentication header to requests from the event handler:

Groovy

import com.eviware.soapui.support.types.StringToStringMap
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.Timestamp;
import java.util.Date;

//Specify authentication data
apiKey = "123";
secret = "123";

// Get a timestamp
date= new java.util.Date();
timestamp = (date.getTime() / 1000);

// Get a hashed signature
signature = null;

toBeHashed = apiKey + secret + timestamp;
MessageDigest md = MessageDigest.getInstance("SHA-512");
byte[] bytes = md.digest(toBeHashed.getBytes("UTF-8"));
StringBuilder sb = new StringBuilder();
for(int i=0; i< bytes.length ;i++){
      sb.append(Integer.toString((bytes[i] & 0xff) + 0x100, 16).substring(1));
}

signature = sb.toString()

// Complete the header value
authHeaderValue = "EAN APIKey=" + apiKey + ",Signature=" + signature + ",timestamp=" + timestamp;

// Obtain the list of request headers
headers = request.getRequestHeaders()

// Add a header to the request
StringToStringMap headermap = new StringToStringMap(headers)
if (headers.containsKeyIgnoreCase("authorization") ){
                headermap.replace("authorization", authHeaderValue)
                } else {
                headermap.put("authorization", authHeaderValue)
                }
 
request.requestHeaders = headermap

See Also

Handling Events
Groovy Scripts

Highlight search results