You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Groovy脚本报错:无If()方法适配,寻求IP提取代码协助

问题解决:Groovy脚本报错No signature of method...If()

报错原因

Groovy是大小写敏感的语言,你代码里把条件判断关键字if写成了大写的If,虚拟机将If识别为方法调用,但当前上下文不存在该方法,因此抛出此错误。

修正后的代码

def map = message.getHeaders();
String value = map.get("x-forwarded-for");
String[] splitterValues = value != null ? value.split(",") : null ;
if ( splitterValues != null && splitterValues.length > 1 ) {
    int clientIPPosition = splitterValues.length - 2;
    def clientIP = splitterValues[clientIPPosition];
    if ( clientIP != null && "123".equals(clientIP.trim()) ) {  
        messageLog.setStringProperty("AllowListed clientIP", clientIP);
    }  
}

额外注意事项

  • 原代码中splitterValues.length > 0的判断存在风险:若数组长度为1,splitterValues.length -2会得到-1,访问数组索引-1会触发数组越界异常,因此改为splitterValues.length > 1确保索引有效。
  • x-forwarded-for通常以逗号分隔多个IP,“倒数第二个为客户端真实IP”的逻辑需结合你的实际场景确认,避免索引取值错误。

内容的提问来源于stack exchange,提问作者SAP_CPI_Groovy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 23:15:00