JMeter下如何用Groovy将含特殊字符的多行EDIFACT报文存入变量
问题原因
你出现的语法报错是因为Groovy中普通双引号"仅支持定义单行字符串,不能直接包含换行符,同时EDIFACT报文中的大量特殊符号也会触发Groovy的转义解析逻辑,导致代码无法正常编译。
解决方法
直接使用Groovy原生的多行文本语法:用三个单引号'''包裹完整的EDIFACT报文即可。这种语法会完全保留原文的换行、空格、特殊符号,不需要对任何字符做转义,完美适配你的场景。
修改后完整代码
def sessInboundQueue = System.getProperties().get("SessionInbound") def destinationInboundQueue = System.getProperties().get("DestinationInbound") def producer = sessInboundQueue.createProducer(destinationInboundQueue) // 用三个单引号包裹多行报文,无需转义任何特殊字符 def payload = '''AAA:+.? ' ABC+ABCD:1+ABCDEFG:ZZ+ABCDEF:ZZ+123456:2042+12345678901++ABCD' DEF+ABCD+LH+FVKJUB+20000:2042+Y1234567+UN+D:21B' GHI+1+ABCD:D:11A:AA:ABCD+ABCD12345678901123ABC123456' JKL+745' HHH+TN:IIAA891011213531235BNM422244:::001' CCC+NT+++ABCDEFGHIJKLMNOPQRS' STU+00123456789012:UF+0000000000:GY' VXY+50+MI1234+++MI' AAA+235+ABC' BBB+200:3202062000:301' FFF+90+USA' BBB+232:2101051135:201' CCC+FF+++AaBaBa001:TEST1' DDD+3++G' EEE+329:711013' FFF+178+XXX' FFF+179+YYY' GGG+2+ZZZ' HHH+BXG:ABCDEF' HHH+ABC:12AB3E01234E8UD8' III+P:110:111+100000001' EEE+36:281105' FFF+91+ASD' VVV+50:2' XXX+0011+1' YYY+1+U0123456' ZZZ+1+U1234560002''' def msg = sessInboundQueue.createTextMessage(payload)
额外说明
- 如果你的EDIFACT报文规范要求不能携带换行符,只需在赋值后调用替换方法去除换行即可:
def payload = '''你的报文内容'''.replaceAll("\\n", "") - 如果你需要动态修改报文中的字段(比如动态替换时间、流水号),可以将三个单引号替换为三个双引号
""",直接在报文中用${变量名}插入动态值即可。
内容的提问来源于stack exchange,提问作者JustNatural
相关产品推荐
相关产品推荐

