Ask a Question

Modify response with request data

SOLVED
maximojo
Frequent Contributor

Modify response with request data

Hi all,

 

Newb question for you. 

 

All I want to do is grab data from the request and add it to the response. In this case a transactionId from the request I want to transfer to the response transactionId field.

 

I have put a variable in the response:

 

<int:TransactionId>${transId}</int:TransactionId>

 

and can get it to update from the script (I'm using a "Sequence" response). However I can't get the data from the request. 

 

Any pointers are appreciated.

 

m

7 REPLIES 7
maximojo
Frequent Contributor

Actuall I think I figured it out.

 

def request = new XmlSlurper().parseText(mockRequest.requestContent)
def a = request.Body.Transaction.TransactionId
context.transId = a

 

So now my response uses the same TransactionId as the request.

 

However if anyone has any better way to do this please let me know.

 

m

Hiya couple of other methods

 

//with xml based request

def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )

def holder = groovyUtils.getXmlHolder(mockRequest.requestContent)

def transID = holder.getNodeValue("//TransactionId")

 

//non xml based request

def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )

def queryContext = mockRequest.getRequestContext()

def transID = queryContext.get("TransactionId")

 

 

 

samuel_perez
Occasional Contributor

Is there a similar Sample for JSON/ REST vs SOAP/XML?

Hiya

 

you could try the jsonslurper, see if that fits the bill for your needs

 

http://docs.groovy-lang.org/latest/html/gapi/groovy/json/JsonSlurper.html

 

 

regards

Mike

following on

 

if you're not bothered about any manipulation of the data and simply want to include input parameter values within the json response simply include the variable within the json response by using ${NonOptVarName} or ${#OptVarName}

 

i.e.

using /myreq/person/{name}/gumf?year={year}

 

putting in the values

          /myreq/person/mike/gumf?year=2016

 

 

the reponse would use

{

      "Name" = "${name}"

      "Year" = ${#year}

}

 

following on

 

if you're not bothered about any manipulation of the data and simply want to include input parameter values within the json response simply include the variable within the json response by using ${NonOptVarName} or ${#OptVarName}

 

i.e.

using /myreq/person/{name}/gumf?year={year}

 

putting in the values

          /myreq/person/mike/gumf?year=2016

 

 

the response would use

{

      "Name" = "${name}"

      "Year" = ${#year}

}

 

Hi

 

it seems that using the ${#year} from my previous example does not work now

 

as an alternative, within groovy script add something as follows in order to be able to reference the value within the response

context.year = mockRequest.getHttpRequest().getParameter("year")

 

then simply use ${year} within the response

cancel
Showing results for 
Search instead for 
Did you mean: