根据接口入参不同返回不同对象集合的方法

最近要写一个外部调用的webservice接口,入参和出参都是xml格式,根据不同的type查询不同的集合返回,代码如下:

首先配置webservice接口的xml文件

然后写接口类

然后是实现类

实现类中最主要的是根据不同的type查询出结果然后分装成返回xml

封装的返回方法运用了泛型,可以传入不同的对象集合

public <T> String getDetailXml(String retCode,List<T> list){
Document doc=DocumentHelper.createDocument();
Element root=DocumentHelper.createElement("root");

Element resultInfo=root.addElement("resultInfo");
Element returnCode = resultInfo.addElement("returnCode");
returnCode.addText(retCode);
//获取集合迭代器
Iterator<T> it = list.iterator();
//循环迭代
while (it.hasNext()) {
Element returnMsg = resultInfo.addElement("returnMsg");
//获取集合里的对象
T t = (T) it.next();
//获得对象的所有声明的字段,即包括public、private和proteced,但是不包括父类的申明字段。
Field[] fields = t.getClass().getDeclaredFields();
for (short i = 0; i < fields.length; i++) {
Field field = fields[i];
//获取属性声明时名字
String fieldName = field.getName();
//拼装get方法
String getMethodName = "get"
+ fieldName.substring(0, 1).toUpperCase()
+ fieldName.substring(1);
String textValue = null;
try {
//获取对象实例
Class tCls = t.getClass();
//获得get方法类
Method getMethod = tCls.getMethod(getMethodName,
new Class[] {});
//获得属性值
Object value = getMethod.invoke(t, new Object[] {});
textValue = value.toString();

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Element el = returnMsg.addElement(fieldName);
el.addText(textValue);

}

}
doc.setRootElement(root);
return doc.asXML();

}

Java的反射机制不是很了解,以后会详细了解

原文地址:https://www.cnblogs.com/zkdn/p/9385231.html

时间: 2024-10-05 17:04:54

根据接口入参不同返回不同对象集合的方法的相关文章

接口入参保护的含义

最近学习<阿里巴巴java开发手册> 第七章控制语句中,第6点提到了入参保护,原文如下: 6. [推荐]接口入参保护,这种场景最常见的是用于做批量操作的接口. 工作中很少提到"入参保护"这个词,更多的是"参数校验"的说法:谈下个人对接口入参保护的理解. 1.接口入参保护,"保护"的是服务器,最常见的体现就是入参的范围或者边界:比如,批量操作接口,明确校验入参的请求日期是N天内的记录,或者最大数量限制是1W条: 开发手册中,尤其提到的场

Spring AOP 自定义注解获取http接口及WebService接口入参和出参

注解方法实现过程中可以采用如下获取方式:-以下为例  HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); 1.定义两个方法注解,分别标记要处理的http接口及Webservice接口: http接口注解 1 2 3 4 5 @Retention(RetentionPolicy.RUNTIME) @Target({ El

Postman 如何处理上一个接口返回值作为下一个接口入参?

今天做接口测试,有一个接口的参数是一个校验 token,会实时更新,开发提供了一个单独返回实时 token 的接口,所以就需要在功能接口使用时调用 token 接口的返回值,作为功能接口的参数来使用. 网上搜了一下,都没有现成的使用说明,刚才研究出来了,就记录下步骤,方便后面的同学. 如果返回 token 的接口的返回值,是标准的 JSON 格式的话,就很简单的两步就行了. 1.token 接口设置全局变量 第一步就是执行 token 接口,并把接口返回值里面的 token 值,赋值给一个全局变

c++调用python系列(1): 结构体作为入参及返回结构体

最近在打算用python作测试用例以便对游戏服务器进行功能测试以及压力测试; 因为服务器是用c++写的,采用的TCP协议,当前的架构是打算用python构造结构体,传送给c++层进行socket发送给游戏服务器,响应消息再交由python进行校验; 开始: 首先是c++调用python这一层需要打通; 幸运的是python自己有一套库提供c/c++进行调用; 下面我贴代码;用的vs2013,python用的2.7 1 // python_c++.cpp : 定义控制台应用程序的入口点. 2 //

RobotFramework:发现一个大坑,当post接口入参为json时,千万不能用sojson转化后的json串,直接用浏览器粘过来的就行

问题背景: 和以往一样愉快的进行着自动化测试,突然就不停的提示我,“程序异常”,查看log发现data中的json变为了数组?????? 那算了,我不先组装入参数据直接data=json入参吧,what`s up, Fu.......................,查看半天post requests关键字的入参,发现没有问题啊. 重新打开ride吧! 这什么工具啊,这么坑我. 解决: 回想之前接口测试用例写的多了,这什么鬼啊,会不会是我json串粘贴的有问题,算了直接把F12抓包过来的入参直接

python函数入参和返回值

以下内容参考自runoob网站,以总结python函数知识点,巩固基础知识,特此鸣谢! 原文地址:http://www.runoob.com/python3/python3-function.html 函数格式大体如下def 函数名(参数列表): 函数体 例子: # 计算面积函数 def area(width, height): return width * height 定义一个函数:给了函数一个名称,指定了函数里包含的参数,和代码块结构. 这个函数的基本结构完成以后,不会执行,除非被调用 如

编写一个通用递归获取树形结构对象集合的方法

/// <summary> /// 通用递归获取树状子节点信息 /// </summary> /// <param name="item"></param> /// <param name="id"></param> /// <returns></returns> private List<T> getTreeListByPid<T, F>(Lis

SpringMVC确定目标方法POJO类型入参的过程

SpringMVC确定目标方法POJO类型入参的过程 访问方法 @RequestMapping("/pojoparam") public String POJOParam(User user){ return "success"; } 1,首先确定一个key值 ①如果目标方法的POJO类型的参数没有使用@ModelAttribute作为入参修饰,则key为POJO类名的第一个字母小写 例test(User user){}这样的方法key就是user ②如果使用了@M

解决SpringMVC入参出现The request sent by the client was syntactically incorrect请求语法错误方法

使用SpringMVC出现The request sent by the client was syntactically incorrect.请求错误如下: 可以确定为提交的表单数据和目标方法的入参不一致所导致,表单数据可以多于目标入参个数,但目标参数没有被赋值,则会出现该异常,如下情况: 表单数据: 目标方法: Employee字段: 比对表单数据和Employee字段,可以发现,表单数据比Employee字段少,再加上目标方法的入参是一个 Employee对象,所以将会出现提交的数据不足,