CPI-Groovy Script

  • 1 存储日志
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;

def Message processData(Message message) 
{
	def body = message.getBody(java.lang.String) as String;
	def messageLog = messageLogFactory.getMessageLog(message);
	if(messageLog != null)
	{
	messageLog.addAttachmentAsString("Log request:", body, "text/plain");
     }
	return message;
}
  • 2 设置或读取Property
   def bool_str = message.getProperty("bools");
   message.setProperty("bools", bool_str + 'new');
   
  • 3 获取uri后面的params或者header
	def body = message.getBody(java.lang.String) as String;
	def map = message.getHeaders();
    def params = map.get("CamelHttpQuery");
    params = params.decodeURL(); 
    map.remove("CamelHttpQuery");
    message.setHeaders(map);
    message.setProperty("url", params);
    
     String.metaClass.decodeURL = {
	 java.net.URLDecoder.decode(delegate, "UTF-8")
  }

注:也可以用来获取header参数值,但是需要配置允许的header,见下图
在这里插入图片描述

  • 4 解析json并替换字段值

以下代码是为了将json中 {“field” : “true”}转成{“field” : true}去除引号 ,

import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import groovy.json.*
def Message processData(Message message) 
{
	def body = message.getBody(java.lang.String) as String;
	def messageLog = messageLogFactory.getMessageLog(message);
     
    def jsonSlurper = new JsonSlurper();
    def list = jsonSlurper.parseText(body);

    //获取需要转换成bools的值
    def bool_str = message.getProperty("bools");
    //拆分
    def bool_arrays = bool_str.split("/");
    
    def list_new = list.items.item.entrySet().getAt(0 ).value;

    for (bool_array in bool_arrays) {
    	 
    	if ( list_new.get(bool_array.toString()) != null )
    	{
    	list_new.(bool_array.toString()) = Boolean.parseBoolean(list_new.get(bool_array.toString()));
    	}
    }
    
    message.setBody(JsonOutput.toJson(list_new)) 
    
	if(messageLog != null)
	{
	messageLog.addAttachmentAsString("Log request:", JsonOutput.toJson(list_new), "text/plain");
     }
     
	return message;
}

5 XML移除标记并存储到property
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
def Message processData(Message message) {
def body = message.getBody(java.lang.String) as String;

def removal = message.getBody(java.lang.String) as String;
removal = removal.replace(/<?xml version="1.0" encoding="UTF-8"?>/,"");
message.setBody(removal);
 
def body_str = message.getProperty("body_str");
message.setProperty("body_str", removal);

def messageLog = messageLogFactory.getMessageLog(message);
if(messageLog != null)
{
messageLog.addAttachmentAsString("Log Response:", body, "text/plain");
 }
return message;

}
在这里插入图片描述
在这里插入图片描述

6.XSD可以根据XML生成 网址
https://codeamaze.com/web-tool/xsd-generator

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值