【问题标题】:How to parse substring values from a string in the service response using groovy script如何使用 groovy 脚本从服务响应中的字符串解析子字符串值
【发布时间】:2014-09-10 00:28:57
【问题描述】:

以下是服务调用响应的 xml 标记中的字符串。

[CDATA[name=test&username=testaccount&nonce=SL9Z4N03VANY3B5&sharedkeyid=testsystem&auth-expiresby=1410288394751&auth-algorithm=HMACSHA256&auth-signature=tPYLciqNxcEyjHygZ5mBo5qH6q+THhXKu8lyej213Fg=]]

我希望捕获 'auth-expiresby' 和 'auth-signature' 的值,并将它们用作我下一次服务调用的参数值。

【问题讨论】:

    标签: regex parsing substring soapui


    【解决方案1】:

    这够好吗?

    \[CDATA\[.*?auth-expiresby=(\d+).*?auth-signature=(.+?)(?:&.*)?\]\]
    

    Demo


    它在[CDATA[]] 之间寻找内容。然后它会在auth-expiresby= 之后捕获 1+ 个数字,在 auth-signature= 之后捕获 1+ 个字符。可能还有更多数据,因此我们可以选择匹配&,然后是更多信息,然后再关闭\]\]

    【讨论】:

      【解决方案2】:

      这是一个纯Java问题,只是选择了一种分解字符串的方式。

      def source = '''
      [CDATA[name=test&username=testaccount&nonce=SL9Z4N03VANY3B5&sharedkeyid=testsystem&auth-expiresby=1410288394751&auth-algorithm=HMACSHA256&auth-signature=tPYLciqNxcEyjHygZ5mBo5qH6q+THhXKu8lyej213Fg=]]
      
      '''
      def authExpiresby
      def authSignature
      
      source.split('&').each {
      
          def tokens = it.split('=')
      
          if(tokens[0].equals('auth-expiresby')) {
              authExpiresby = tokens[1]
          }
      
          if(tokens[0].equals('auth-signature')) {
              authSignature = tokens[1]
          }
      }
      
      assert authExpiresby.equals('1410288394751')
      assert authSignature.equals('tPYLciqNxcEyjHygZ5mBo5qH6q+THhXKu8lyej213Fg')
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 2023-03-27
      • 2019-07-18
      • 1970-01-01
      • 2021-06-25
      • 1970-01-01
      相关资源
      最近更新 更多