需求
有个接口需求,使用rest协议,通过PO调用接口时,把接口响应内容拆分到不同字段,输出为JSON格式
响应内容如下:既不是json格式 也不是xml格式 无法自动在receiver中转换为message mapping所需的xml格式
处理办法
我们手动把响应内容转换为xml格式,之后就能在message mapping中使用
用一个string承接响应内容
参考社区中的方法
https://answers.sap.com/questions/13129930/rest-receiver-adapter-sync-binary-response-how-to.html?childToView=13129963
这样就能把响应内容放在message mapping中
再使用UDF把该字符串拆分到对应字段
UDF
定义:
拆分代码:
public String splitParameters(String keyname, String response, Container container) throws StreamTransformationException{
String str = "";
if (response != null) {
//去除特殊字符 空格等
response.replaceAll(" ", "");
response.replaceAll("\\s*|\r|\n|\t","");
response.replaceAll("\n","");
String[] ws = response.split("&");
if (keyname == "status") {
String[] sp = ws[0].split("=");
str = sp[1];
}
else if (keyname == "enc_response") {
String[] sp = ws[1].split("=");
str = sp[1];
}
else if (keyname == "enc_error_code") {
try {
if (ws[2] != null) {
String[] sp = ws[2].split("=");
str = sp[1];
}
} catch (Exception e) {
// TODO: handle exception
}
}
}
return str;
}
测试结果
已实现
总结
对于响应内容不规范的接口处理很有帮助
以上