使用Groovy脚本解析查询字符串,其中数据嵌入在路径中

时间:2013-10-16 14:33:21

标签: groovy soapui

感谢您的时间和提前帮助。

我正在使用soapUI模拟服务并尝试编写Groovy脚本。我收到的请求查询URL如下:

 http://server:port/readwrapper/v1/historicalData/medicalHistory/STR/888888_2.16.840.1.113883.3.42.10012.100001.206_h0102a3727570b14038b349136f2a5fd58e0102

我想从这个URL中提取的内容是

  1. 2.16.840.1.113883.3.42.10012.100001.206这是communityID
  2. h0102a3727570b14038b349136f2a5fd58e0102这是文件编号
  3. 我能用Groovy编写的代码是:

    def reqStr = mockRequest.getHttpRequest().getQueryString()
    

    我不知道如何继续前进。请帮忙。

1 个答案:

答案 0 :(得分:2)

不确定它是否有效(我不使用SoapUI),但您可以尝试:

def (cid,did) = mockRequest.httpRequest
                           .requestURI
                           .tokenize( '/' )
                           .last()
                           .tokenize( '_' )
                           .drop( 1 )

如果Groovy SoapUI使用的版本不支持drop

def (cid,did) = mockRequest.httpRequest
                           .requestURI
                           .tokenize( '/' )
                           .last()
                           .tokenize( '_' )[ 1..-1 ]

如果它不支持多项任务,那么:

def parts = mockRequest.httpRequest
                       .requestURI
                       .tokenize( '/' )
                       .last()
                       .tokenize( '_' )[ 1..-1 ]
def cid = parts[ 0 ]
def did = parts[ 1 ]