Forum Discussion

sayantan12's avatar
sayantan12
New Contributor
13 years ago

need help in capturing response from XML using groovy

Hi folks,

I a novice in groovy. I have been trying to capture the response xml value in groovy script, but its not displaying properly. appriciate any help:

here is my request:
Name:ConversionRate - Request 1

Request:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:web="http://www.webserviceX.NET/">
<soap:Header/>
<soap:Body>
<web:ConversionRate>
<web:FromCurrency>SEK</web:FromCurrency>
<web:ToCurrency>DKK</web:ToCurrency>
</web:ConversionRate>
</soap:Body>
</soap:Envelope>

Response:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ConversionRateResponse xmlns="http://www.webserviceX.NET/">
<ConversionRateResult>5.7187</ConversionRateResult>
</ConversionRateResponse>
</soap:Body>
</soap:Envelope>

Below is the groovy script:

import java.io.File;
import com.eviware.soapui.support.*;
import java.util.*;
import jxl.*;
import java.lang.*;
//import com.eviware.soapui.model.iface.*;
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context );
def request = groovyUtils.getXmlHolder("ConversionRate - Request 1#Request");
def response = groovyUtils.getXmlHolder("ConversionRate - Request 1#Request");
def projectdir = context.expand('${#Global#PATH}');
Workbook workbook = Workbook.getWorkbook(new File("C:/Temp1.xls"));
Sheet sheet = workbook.getSheet("Sheet1");
rowcount = sheet.getRows();
colcount = sheet.getColumns();

def testCase = testRunner.getTestCase();
Name = testCase.getName();
for (tc_row in 0..2)
{
def a1 = sheet.getCell(0,tc_row);
String s1 = a1.getContents();
def a2 = sheet.getCell(1,tc_row);
String s2 = a2.getContents();
request.setNodeValue("//web:ConversionRate/web:FromCurrency", "${s1}");
request.setNodeValue("//web:ConversionRate/web:ToCurrency", "${s2}");
request.updateProperty();
log.info(s1);
log.info(s2)
log.info(response.getNodeValue("//ConversionRateResponse/ConversionRateResult"));

testRunner.runTestStepByName("ConversionRate - Request 1");


}

4 Replies

  • sayantan12's avatar
    sayantan12
    New Contributor
    Hi,

    I am really hoping to get an answer for this post.

    Request you all to help me on the same. No amount of googlin helped!!!

    thanks in advance
  • MartinSpamer's avatar
    MartinSpamer
    Frequent Contributor
    I can't see any obvious errors. How is it failing ? are you getting any error messages what result are you seeing, empty?
  • sayantan12's avatar
    sayantan12
    New Contributor
    No errors!! but i am not able to capture the response XML value. Its coming as NULL in my script. I need to capture the below response

    <ConversionRateResult>5.7187</ConversionRateResult>
  • MartinSpamer's avatar
    MartinSpamer
    Frequent Contributor
    def response = groovyUtils.getXmlHolder("ConversionRate - Request 1#Request");

    Should be

    def response = groovyUtils.getXmlHolder("ConversionRate - Request 1#Response");