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

使用Groovy脚本解析路径中嵌入数据的查询字符串,groovy,soapui,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中提取的是 2.16.840.1.113883.3.4

提前感谢您的时间和帮助

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

 http://server:port/readwrapper/v1/historicalData/medicalHistory/STR/888888_2.16.840.1.113883.3.42.10012.100001.206_h0102a3727570b14038b349136f2a5fd58e0102
我想从这个URL中提取的是

  • 2.16.840.1.113883.3.42.10012.100001.206这是社区ID
  • h0102a3727570b14038b349136f2a5fd58e0102是文档ID
  • 我能在Groovy中编写的全部代码是:

    def reqStr = mockRequest.getHttpRequest().getQueryString()
    
    我不知道如何进一步进行。请帮助。

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

    def (cid,did) = mockRequest.httpRequest
                               .requestURI
                               .tokenize( '/' )
                               .last()
                               .tokenize( '_' )
                               .drop( 1 )
    
    如果Groovy SoapUI使用的版本不支持拖放:

    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 ]
    

    非常感谢你给我看代码。如果你不介意再帮我一点…非常感谢你给我看代码。如果你不介意再帮我一点。。。如果字符串是R_H_D,我们使用tokenize(“”)来解析该字符串。[-1]是否表示该字符串中的最后一个,即“D”?哪个索引是该字符串中的第一个“R”?哪个索引是该字符串中的第二个“H”?非常感谢。