package cc.mrbird.febs.pay.util; import com.thoughtworks.xstream.XStream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Field; import java.util.Map; /** * User: rizenguo * Date: 2014/10/23 * Time: 14:59 */ public class Util { //打log用 /** * 通过反射的方式遍历对象的属性和属性值,方便调试 * * @param o 要遍历的对象 * @throws Exception */ public static void reflect(Object o) throws Exception { Class cls = o.getClass(); Field[] fields = cls.getDeclaredFields(); for (int i = 0; i < fields.length; i++) { Field f = fields[i]; f.setAccessible(true); Util.log(f.getName() + " -> " + f.get(o)); } } public static byte[] readInput(InputStream in) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); int len = 0; byte[] buffer = new byte[1024]; while ((len = in.read(buffer)) > 0) { out.write(buffer, 0, len); } out.close(); in.close(); return out.toByteArray(); } public static String inputStreamToString(InputStream is) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); int i; while ((i = is.read()) != -1) { baos.write(i); } return baos.toString(); } public static InputStream getStringStream(String sInputString) { ByteArrayInputStream tInputStringStream = null; if (sInputString != null && !sInputString.trim().equals("")) { tInputStringStream = new ByteArrayInputStream(sInputString.getBytes()); } return tInputStringStream; } public static Object getObjectFromXML(String xml, Class tClass) { //将从API返回的XML数据映射到Java对象 XStream xStreamForResponseData = new XStream(); XStream.setupDefaultSecurity(xStreamForResponseData); xStreamForResponseData.allowTypes(new Class[]{tClass}); xStreamForResponseData.alias("xml", tClass); xStreamForResponseData.ignoreUnknownElements();//暂时忽略掉一些新增的字段 return xStreamForResponseData.fromXML(xml); } public static String getStringFromMap(Map map, String key, String defaultValue) { if (key == "" || key == null) { return defaultValue; } String result = (String) map.get(key); if (result == null) { return defaultValue; } else { return result; } } public static int getIntFromMap(Map map, String key) { if (key == "" || key == null) { return 0; } if (map.get(key) == null) { return 0; } return Integer.parseInt((String) map.get(key)); } /** * 打log接口 * @param log 要打印的log字符串 * @return 返回log */ public static String log(Object log){ System.out.println(log.toString()); return log.toString(); } /** * 读取本地的xml数据,一般用来自测用 * @param localPath 本地xml文件路径 * @return 读到的xml字符串 */ public static String getLocalXMLString(String localPath) throws IOException { return Util.inputStreamToString(Util.class.getResourceAsStream(localPath)); } }