How to get a Request Body from API Test Object

How to access a Request body set inside aObject
getHttpBody became obsolete and getBodyContent also not working

I wrote a Test Case “TC1” as follows

import com.kms.katalon.core.testobject.ConditionType
import com.kms.katalon.core.testobject.RequestObject
import com.kms.katalon.core.testobject.ResponseObject
import com.kms.katalon.core.testobject.TestObjectProperty
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS

String endpoint = "https://official-joke-api.appspot.com/random_joke"
String requestMethod = "GET"
String authHeader = "whateverYouNeedForAuthentication"

TestObjectProperty header1 = new TestObjectProperty("Authorization", ConditionType.EQUALS, authHeader)
TestObjectProperty header2 = new TestObjectProperty("Content-Type", ConditionType.EQUALS, "application/json")
TestObjectProperty header3 = new TestObjectProperty("Accept", ConditionType.EQUALS, "application/json")
ArrayList defaultHeaders = Arrays.asList(header1, header2, header3)

RequestObject ro = new RequestObject("objectId")
ro.setRestUrl(endpoint)
ro.setHttpHeaderProperties(defaultHeaders)
ro.setRestRequestMethod(requestMethod)

ResponseObject resp = WS.sendRequest(ro)
// see the javadoc at https://api-docs.katalon.com/com/kms/katalon/core/testobject/ResponseObject.html

println "status code: " + resp.getStatusCode()
println "response text: " + resp.getResponseText()
println "response body size: " + resp.getResponseBodySize()   // showed -1; this must be a bug of Katalon Studio
println "response header size: " + resp.getResponseHeaderSize()

Please note that I used resp.getResponseText() to get the text in the HTTP Response body.

When I ran this, I got the following messages in the console

2023-05-23 06:59:37.503 INFO  c.k.katalon.core.main.TestCaseExecutor   - --------------------
2023-05-23 06:59:37.508 INFO  c.k.katalon.core.main.TestCaseExecutor   - START Test Cases/TC1
2023-05-23 06:59:38.221 DEBUG testcase.TC1                             - 1: endpoint = "https://official-joke-api.appspot.com/random_joke"
2023-05-23 06:59:38.223 DEBUG testcase.TC1                             - 2: requestMethod = "GET"
2023-05-23 06:59:38.225 DEBUG testcase.TC1                             - 3: authHeader = "whateverYouNeedForAuthentication"
2023-05-23 06:59:38.227 DEBUG testcase.TC1                             - 4: header1 = new com.kms.katalon.core.testobject.TestObjectProperty(Authorization, com.kms.katalon.core.testobject.ConditionType.EQUALS, authHeader)
2023-05-23 06:59:38.252 DEBUG testcase.TC1                             - 5: header2 = new com.kms.katalon.core.testobject.TestObjectProperty(Content-Type, com.kms.katalon.core.testobject.ConditionType.EQUALS, application/json)
2023-05-23 06:59:38.255 DEBUG testcase.TC1                             - 6: header3 = new com.kms.katalon.core.testobject.TestObjectProperty(Accept, com.kms.katalon.core.testobject.ConditionType.EQUALS, application/json)
2023-05-23 06:59:38.258 DEBUG testcase.TC1                             - 7: defaultHeaders = Arrays.asList(header1, header2, header3)
2023-05-23 06:59:38.283 DEBUG testcase.TC1                             - 8: ro = new com.kms.katalon.core.testobject.RequestObject(objectId)
2023-05-23 06:59:38.311 DEBUG testcase.TC1                             - 9: ro.setRestUrl(endpoint)
2023-05-23 06:59:38.318 DEBUG testcase.TC1                             - 10: ro.setHttpHeaderProperties(defaultHeaders)
2023-05-23 06:59:38.322 DEBUG testcase.TC1                             - 11: ro.setRestRequestMethod(requestMethod)
2023-05-23 06:59:38.326 DEBUG testcase.TC1                             - 12: resp = sendRequest(ro)
2023-05-23 06:59:40.608 INFO  c.k.k.core.webservice.common.HarLogger   - HAR: /var/folders/7m/lm7d6nx51kj0kbtnsskz6r3m0000gn/T/Katalon/Test Cases/TC1/20230523_065934/requests/main/0.har
2023-05-23 06:59:40.904 DEBUG testcase.TC1                             - 13: println("status code: " + resp.getStatusCode())
status code: 200
2023-05-23 06:59:40.937 DEBUG testcase.TC1                             - 14: println("response text: " + resp.getResponseText())
response text: {"type":"general","setup":"How many South Americans does it take to change a lightbulb?","punchline":"A Brazilian","id":144}
2023-05-23 06:59:40.950 DEBUG testcase.TC1                             - 15: println("response body size: " + resp.getResponseBodySize())
response body size: -1
2023-05-23 06:59:40.956 DEBUG testcase.TC1                             - 16: println("response header size: " + resp.getResponseHeaderSize())
response header size: 351
2023-05-23 06:59:40.973 INFO  c.k.katalon.core.main.TestCaseExecutor   - END Test Cases/TC1

Please find that this code successfully get access to the HTTP Request body, which is a JSON text.

@vu.tran

I saw the following:

2023-05-23 06:59:40.950 DEBUG testcase.TC1                             - 15: println("response body size: " + resp.getResponseBodySize())
response body size: -1

ResponseObject#getResponseBodySize() must not return -1 here. I believe, this is a bug of Katalon Studio.