Groovy & SoapUI - NumberFormatException
Groovy & SoapUI - NumberFormatException
在 SoapUI 中,我能够从 Web 服务获得响应,该响应为我提供了一个字符串 return.
XML Node Value
soap:Envelope {Envelope}
soap:Body {Body}
EuroConvertorResponse
EuroConvertorResult 1.0966 {xsd:string}
我设法读取了 Groovy 脚本中的响应,但出现数字格式异常。我的代码是:
String conversionString = context.expand(
'${EuroConvertorRequest#Response#declare namespace
ns1=\'http://tempuri.org/\'; //ns1:EuroConvertorResponse[1]}' )
double convertedRate = Double.parseDouble(conversionString);
我得到的确切错误是:
java.lang.NumberFormatException: For input string: " 1.0966 " error at line: 10.
如果我像下面这样对响应进行硬编码,它仍然可以正常工作!
String conversionRate = "1.0966";
double convertedRate = Double.parseDouble(conversionString);
有什么想法吗?
我相信您使用的 xpath
不正确。应该查询 EuroConvertorResult
,而不是 EuroConvertorResponse
。
尝试更改:
String conversionString = context.expand('${EuroConvertorRequest#Response#declare namespace ns1=\'http://tempuri.org/\'; //ns1:EuroConvertorResponse[1]}' )
收件人:
String conversionString = context.expand('${EuroConvertorRequest#Response#declare namespace ns1=\'http://tempuri.org/\'; //ns1:EuroConvertorResult}' )
或者实际上,通过在末尾添加 as Double
来强制获取单行本身的双精度值:
def conversionResult = context.expand('${EuroConvertorRequest#Response#declare namespace ns1=\'http://tempuri.org/\'; //ns1:EuroConvertorResult}' ) as Double
assert conversionResult instanceof Double
或者,您可以使用 XmlSlurper
来达到相同的目的:
def result = new XmlSlurper().parseText(context.expand('${EuroConvertorRequest#Response}').'**'.find{it.name() == 'EuroConvertorResult'}.text() as Double
log.info result
assert result instanceof Double
在 SoapUI 中,我能够从 Web 服务获得响应,该响应为我提供了一个字符串 return.
XML Node Value
soap:Envelope {Envelope}
soap:Body {Body}
EuroConvertorResponse
EuroConvertorResult 1.0966 {xsd:string}
我设法读取了 Groovy 脚本中的响应,但出现数字格式异常。我的代码是:
String conversionString = context.expand(
'${EuroConvertorRequest#Response#declare namespace
ns1=\'http://tempuri.org/\'; //ns1:EuroConvertorResponse[1]}' )
double convertedRate = Double.parseDouble(conversionString);
我得到的确切错误是:
java.lang.NumberFormatException: For input string: " 1.0966 " error at line: 10.
如果我像下面这样对响应进行硬编码,它仍然可以正常工作!
String conversionRate = "1.0966";
double convertedRate = Double.parseDouble(conversionString);
有什么想法吗?
我相信您使用的 xpath
不正确。应该查询 EuroConvertorResult
,而不是 EuroConvertorResponse
。
尝试更改:
String conversionString = context.expand('${EuroConvertorRequest#Response#declare namespace ns1=\'http://tempuri.org/\'; //ns1:EuroConvertorResponse[1]}' )
收件人:
String conversionString = context.expand('${EuroConvertorRequest#Response#declare namespace ns1=\'http://tempuri.org/\'; //ns1:EuroConvertorResult}' )
或者实际上,通过在末尾添加 as Double
来强制获取单行本身的双精度值:
def conversionResult = context.expand('${EuroConvertorRequest#Response#declare namespace ns1=\'http://tempuri.org/\'; //ns1:EuroConvertorResult}' ) as Double
assert conversionResult instanceof Double
或者,您可以使用 XmlSlurper
来达到相同的目的:
def result = new XmlSlurper().parseText(context.expand('${EuroConvertorRequest#Response}').'**'.find{it.name() == 'EuroConvertorResult'}.text() as Double
log.info result
assert result instanceof Double