How to edit or add parameters to a rest call and edit the PUT URL

Good Day

I would like to edit my parameters and PUT URL before sending my REST call.

The code I currently have for editing my parameters:

import com.kms.katalon.core.testobject.ResponseObject

import com.kms.katalon.core.testobject.RequestObject

import org.json.JSONObject

RequestObject request = findTestObject('Set Test Score')

JSONObject parameters = new JSONObject();

parameters.put('action', 'set_score');

parameters.put('score', GlobalVariable.CBT_pass_fail_status);

System.out.println('Parameters : ' + parameters.toString());

'Change HTTP parameters'

request.setRestParameters(parameters.toString())

'Send a REST request after its parameters have been changed'

def response = WS.sendRequest(request)

'Check response code'

def responseCode = response.getStatusCode()

System.out.println('Response Code: ' + responseCode)

I get the following error:

[ERROR] - Test Cases/Set test score on CBT FAILED because (of) groovy.lang.MissingMethodException: No signature of method: com.kms.katalon.core.testobject.RequestObject.setRestParameters() is applicable for argument types: (java.lang.String) values: [{"score":"fail","action":"set_score"}]

Possible solutions: setRestParameters(java.util.List), getRestParameters()

I do not have code to edit URL. How do i achieve this.

Thank you.

Awesome Its working !!! Thank you for your help and time. Appreciate your effort.

If you want print response content, please use response.getResponseText()instead of just printing raw response like that . The list of APIs used for response object can be found here

1 Like

ok it runs throught the code but i get weird output:
**import** com.kms.katalon.core.testobject.ResponseObject
**import** com.kms.katalon.core.testobject.RequestObject
**import** org.json.JSONObject
**import** com.kms.katalon.core.testobject.ConditionType
**import** com.kms.katalon.core.testobject.TestObjectProperty
RequestObject request = _findTestObject_('Set Test Score')
List<TestObjectProperty> parameters = **new** ArrayList<>()
parameters.add(**new** TestObjectProperty('action', ConditionType.**_EQUALS_**, 'set_score'))
parameters.add(**new** TestObjectProperty('score', ConditionType.**_EQUALS_**, GlobalVariable._CBT_pass_fail_status_))
System.**_out_**.println('Parameters : ' + parameters);
'Change HTTP parameters'
request.setRestParameters(parameters)
'Send a REST request after its parameters have been changed'
**def** response = WS._sendRequest_(request)
System.**_out_**.println('Response : ' + response)
'Check response code'
**def** responseCode = response.getStatusCode()
System.**_out_**.println('Response Code: ' + responseCode)

OutPut :
06-13-2017 09:32:14 AM - [START] - Start Test Case : Test Cases/Set test score on CBT
06-13-2017 09:32:14 AM - [INFO] - Evaluating variables for test case
06-13-2017 09:32:15 AM - [START] - Start action : Statement - request = com.kms.katalon.core.testobject.ObjectRepository.findTestObject(Set Test Score)
06-13-2017 09:32:15 AM - [INFO] - Finding Test Object with id 'Object Repository/Set Test Score'
06-13-2017 09:32:15 AM - [END] - End action : Statement - request = com.kms.katalon.core.testobject.ObjectRepository.findTestObject(Set Test Score)
06-13-2017 09:32:15 AM - [START] - Start action : Statement - parameters = new java.util.ArrayList()
06-13-2017 09:32:29 AM - [END] - End action : Statement - parameters = new java.util.ArrayList()
06-13-2017 09:32:29 AM - [START] - Start action : Statement - parameters.add(new com.kms.katalon.core.testobject.TestObjectProperty(action, com.kms.katalon.core.testobject.ConditionType.EQUALS, set_score))
06-13-2017 09:32:29 AM - [END] - End action : Statement - parameters.add(new com.kms.katalon.core.testobject.TestObjectProperty(action, com.kms.katalon.core.testobject.ConditionType.EQUALS, set_score))
06-13-2017 09:32:29 AM - [START] - Start action : Statement - parameters.add(new com.kms.katalon.core.testobject.TestObjectProperty(score, com.kms.katalon.core.testobject.ConditionType.EQUALS, internal.GlobalVariable.CBT_pass_fail_status))
06-13-2017 09:32:29 AM - [END] - End action : Statement - parameters.add(new com.kms.katalon.core.testobject.TestObjectProperty(score, com.kms.katalon.core.testobject.ConditionType.EQUALS, internal.GlobalVariable.CBT_pass_fail_status))
06-13-2017 09:32:29 AM - [START] - Start action : Statement - out.println("Parameters : " + parameters)
Parameters : [com.kms.katalon.core.testobject.TestObjectProperty@363f6148, com.kms.katalon.core.testobject.TestObjectProperty@4b21844c]
06-13-2017 09:33:57 AM - [END] - End action : Statement - out.println("Parameters : " + parameters)
06-13-2017 09:33:57 AM - [START] - Start action : Statement - request.setRestParameters(parameters)
06-13-2017 09:34:06 AM - [END] - End action : Statement - request.setRestParameters(parameters)
06-13-2017 09:34:06 AM - [START] - Start action : Statement - response = com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords.sendRequest(request)
06-13-2017 09:34:09 AM - [INFO] - Checking request object
06-13-2017 09:34:10 AM - [PASSED] - Send request successfully
06-13-2017 09:34:10 AM - [END] - End action : Statement - response = com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords.sendRequest(request)
06-13-2017 09:34:10 AM - [START] - Start action : Statement - out.println("Response : " + response)
Response : com.kms.katalon.core.testobject.ResponseObject@7180e701
06-13-2017 09:34:10 AM - [END] - End action : Statement - out.println("Response : " + response)
06-13-2017 09:34:10 AM - [START] - Start action : Statement - responseCode = response.getStatusCode()
06-13-2017 09:35:14 AM - [END] - End action : Statement - responseCode = response.getStatusCode()
06-13-2017 09:35:14 AM - [START] - Start action : Statement - out.println("Response Code: " + responseCode)
Response Code: 404
06-13-2017 09:35:14 AM - [END] - End action : Statement - out.println("Response Code: " + responseCode)
06-13-2017 09:35:14 AM - [PASSED] - Test Cases/Set test score on CBT
06-13-2017 09:35:14 AM - [END] - End Test Case : Test Cases/Set test score on CBT

This is the import you need:

**import** com.kms.katalon.core.testobject.TestObjectProperty

Im still finding it challenging to get this to work. I’ve tried the following:
**import** com.kms.katalon.core.testobject.ResponseObject
**import** com.kms.katalon.core.testobject.RequestObject
**import** org.json.JSONObject
**import** com.kms.katalon.core.testobject.ConditionType
RequestObject request = _findTestObject_('Set Test Score')
List<TestObjectProperty> parameters = **new** ArrayList<>()
parameters.add(**new** TestObjectProperty('action', ConditionType.**_EQUALS_**, 'set_score'))
parameters.add(**new** TestObjectProperty('score', ConditionType.**_EQUALS_**, GlobalVariable._CBT_pass_fail_status_))
System.**_out_**.println('Parameters : ' + parameters);
'Change HTTP parameters'
request.setRestParameters(parameters)
'Send a REST request after its parameters have been changed'
**def** response = WS._sendRequest_(request)

This was the error i get.
06-13-2017 09:08:18 AM - [ERROR] - Test Cases/Set test score on CBT FAILED because (of) org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
file:/Users/deane.rousseau/Katalon%20Studio/Blue%20Robot/Scripts/Set%20test%20score%20on%20CBT/Script1497008111137.groovy: 47: unable to resolve class TestObjectProperty
@ line 47, column 6.
List<TestObjectProperty> parameters = new ArrayList<>()
^
file:/Users/deane.rousseau/Katalon%20Studio/Blue%20Robot/Scripts/Set%20test%20score%20on%20CBT/Script1497008111137.groovy: 48: unable to resolve class TestObjectProperty
@ line 48, column 16.
parameters.add(new TestObjectProperty('action', ConditionType.EQUALS, 'set_score'))
^
file:/Users/deane.rousseau/Katalon%20Studio/Blue%20Robot/Scripts/Set%20test%20score%20on%20CBT/Script1497008111137.groovy: 49: unable to resolve class TestObjectProperty
@ line 49, column 16.
parameters.add(new TestObjectProperty('score', ConditionType.EQUALS, GlobalVariable.CBT_pass_fail_status))
^
3 errors

What imports do i add to my code.

Ok understood.

Below is the code i have updated. What do i need to import to add data to a list?
**import** com.kms.katalon.core.testobject.ResponseObject
**import** com.kms.katalon.core.testobject.RequestObject
**import** org.json.JSONObject
**import** org.json.ArrayList
RequestObject request = _findTestObject_('Set Test Score')
ArrayList<JSONObject> list = **new** ArrayList<JSONObject>();
JSONObject parameters = **new** JSONObject();
parameters.put('action', 'set_score');
parameters.put('score', GlobalVariable._CBT_pass_fail_status_);
list.add(parameters);
System.**_out_**.println('Parameters : ' + list);
'Change HTTP parameters'
request.setRestParameters(list)
'Send a REST request after its parameters have been changed'
**def** response = WS._sendRequest_(request)
'Check response code'
**def** responseCode = response.getStatusCode()
System.**_out_**.println('Response Code: ' + responseCode)

The input parameter of setRestParameter is incorrect. If you look at API doc page, the input is List<TestObjectProperty> restParameters:

**[setRestParameters](http://api-docs.katalon.com/studio/v4.6.0/api/com.kms.katalon.core/com/kms/katalon/core/testobject/RequestObject.html#setRestParameters(List<TestObjectProperty>))**([List](http://download.oracle.com/javase/6/docs/api/java/util/List.html "List")<[TestObjectProperty](http://api-docs.katalon.com/studio/v4.6.0/api/com.kms.katalon.core/com/kms/katalon/core/testobject/TestObjectProperty.html "TestObjectProperty")> restParameters)

The input should be a list in this case

Hi Deane, Please replace your parameters definition by this.

List<TestObjectProperty> parameters = new ArrayList<>()

parameters.add(new TestObjectProperty('action', ConditionType.EQUALS, 'set_score'))

parameters.add(new TestObjectProperty('score', ConditionType.EQUALS, 'GlobalVariable._CBT_pass_fail_status_'))

The RequestObject.setParameters requires a list of TestObjectProperty, not a list of JSONObject.

Thanks.

1 Like

Thanks for the documentation! This is amazing.