微信支付demo

服务端代码:

[html]  view plain  copy
  1. package com.wlsq.kso.web;  
  2.   
  3. import java.io.ByteArrayOutputStream;  
  4. import java.io.InputStream;  
  5. import java.io.UnsupportedEncodingException;  
  6. import java.math.BigDecimal;  
  7. import java.util.ArrayList;  
  8. import java.util.HashMap;  
  9. import java.util.Iterator;  
  10. import java.util.List;  
  11. import java.util.Map;  
  12. import java.util.Map.Entry;  
  13. import java.util.Random;  
  14. import java.util.Set;  
  15. import java.util.SortedMap;  
  16. import java.util.TreeMap;  
  17.   
  18. import javax.servlet.http.HttpServletRequest;  
  19. import javax.servlet.http.HttpServletResponse;  
  20.   
  21. import org.apache.cxf.common.util.StringUtils;  
  22. import org.slf4j.Logger;  
  23. import org.slf4j.LoggerFactory;  
  24. import org.springframework.beans.factory.annotation.Autowired;  
  25. import org.springframework.stereotype.Controller;  
  26. import org.springframework.web.bind.annotation.RequestMapping;  
  27. import org.springframework.web.bind.annotation.RequestMethod;  
  28. import org.springframework.web.bind.annotation.ResponseBody;  
  29. import com.alibaba.fastjson.JSON;  
  30. import com.alibaba.fastjson.JSONArray;  
  31. import com.alibaba.fastjson.JSONObject;  
  32. import com.wlsq.kso.annotation.MethodAction;  
  33. import com.wlsq.kso.entity.ResultObject;  
  34. import com.wlsq.kso.service.AccountWalletService;  
  35. import com.wlsq.kso.util.HttpUtil;  
  36. import com.wlsq.kso.util.MyMd5Util;  
  37. import com.wlsq.kso.util.XmltoJsonUtil;  
  38.   
  39. /**  
  40.  * 微信支付接口Controller  
  41.  *   
  42.  * @author zzg  
  43.  * @date 2017-02-18  
  44.  */  
  45.   
  46. @Controller  
  47. @RequestMapping(value = "/WeiXinPay")  
  48. public class AccountWeiXinController {  
  49.     private static final Logger LOG = LoggerFactory  
  50.             .getLogger(AccountWeiXinController.class);  
  51.       
  52.     @Autowired  
  53.     private AccountWalletService accountWalletService;  
  54.   
  55.     // 微信统一下单接口路径  
  56.     private static final String UNIFORMORDER = "https://api.mch.weixin.qq.com/pay/unifiedorder";  
  57.   
  58.     // 微信商户号:*****  
  59.     private static final String MCHID = "********";  
  60.     // 微信回调地址  
  61.     private static final String NOTIFYURL = "*********";  
  62.     // 微信交易类型  
  63.     private static final String TRADETYPE = "APP";  
  64.     //微信APIKEY  
  65.     private static final String APIKEY ="************";  
  66.   
  67.     /**  
  68.      * 微信统一下单  
  69.      *   
  70.      * @return  
  71.      * @throws UnsupportedEncodingException   
  72.      */  
  73.     @MethodAction(optionDescription = "微信统一下单"methodName = "/WeiXinPay/uniformorder")  
  74.     @RequestMapping(value = "/uniformorder"method = RequestMethod.POST, produces = "text/html;charset=UTF-8")  
  75.     @ResponseBody  
  76.     public String uniformorder(HttpServletRequest request) throws UnsupportedEncodingException {  
  77.         ResultObject result = new ResultObject();// 返回数据结果集合  
  78.         request.setCharacterEncoding("UTF-8");    
  79.           
  80.         try {  
  81.             //APP ID  
  82.             String appid = request.getParameter("appid") == null ? null  
  83.                     : request.getParameter("appid").trim().toUpperCase();  
  84.             // 用户访问令牌  
  85.             String accessToken = request.getParameter("accessToken") == null ? null  
  86.                     : request.getParameter("accessToken").trim();  
  87.             // 订单编号  
  88.             String orderNum = request.getParameter("orderNum") == null ? null  
  89.                     : request.getParameter("orderNum").trim();// 订单编号  
  90.             // 消费金额  
  91.             String money = request.getParameter("money") == null ? null  
  92.                     : request.getParameter("money").trim();// 消费金额  
  93.             // 消费主题  
  94.             String subject = request.getParameter("subject") == null ? null  
  95.                     : request.getParameter("subject").trim();// 消费主体  
  96.               
  97.             if(StringUtils.isEmpty(appid)){  
  98.                 result.setMsg("参数:appid 为空");  
  99.                 result.setResultCode("-1");  
  100.                 return JSON.toJSONString(result);  
  101.             }  
  102.             if(StringUtils.isEmpty(accessToken)){  
  103.                 result.setMsg("参数:accessToken 为空");  
  104.                 result.setResultCode("-1");  
  105.                 return JSON.toJSONString(result);  
  106.             }  
  107.               
  108.             if(StringUtils.isEmpty(orderNum)){  
  109.                 result.setMsg("参数:orderNum 为空");  
  110.                 result.setResultCode("-1");  
  111.                 return JSON.toJSONString(result);  
  112.             }  
  113.             if(StringUtils.isEmpty(money)){  
  114.                 result.setMsg("参数:money 为空");  
  115.                 result.setResultCode("-1");  
  116.                 return JSON.toJSONString(result);  
  117.             }  
  118.             if(StringUtils.isEmpty(subject)){  
  119.                 result.setMsg("参数:subject 为空");  
  120.                 result.setResultCode("-1");  
  121.                 return JSON.toJSONString(result);  
  122.             }  
  123.   
  124.             SortedMap<Object,Object> parame = new TreeMap<Object,Object>();  
  125.             parame.put("appid", *********");  
  126.             parame.put("mch_id", MCHID);// 商家账号。  
  127.             String randomStr = getRandomString(18).toUpperCase();  
  128.             parame.put("nonce_str", randomStr);// 随机字符串           
  129.             parame.put("body", subject);// 商品描述  
  130.             parame.put("out_trade_no", orderNum);// 商户订单编号  
  131.                //支付金额  
  132.   
  133.             parame.put("total_fee", BigDecimal.valueOf(Long.parseLong(money)).multiply(new BigDecimal(100)).toString());// 消费金额  
  134.             String ip = getIpAddr(request);  
  135.             if (StringUtils.isEmpty(ip)) {  
  136.                 parame.put("spbill_create_ip", "127.0.0.1");// 消费IP地址  
  137.             } else {  
  138.                 parame.put("spbill_create_ip", ip);// 消费IP地址  
  139.             }  
  140.             parame.put("notify_url", NOTIFYURL);// 回调地址  
  141.             parame.put("trade_type", TRADETYPE);// 交易类型APP  
  142.             String sign =createSign(parame);   
  143.             parame.put("sign", sign);// 数字签证  
  144.               
  145.             String xml = getRequestXML(parame);   
  146.   
  147.             String content = HttpUtil.sendPost(UNIFORMORDER, xml);    
  148.             System.out.println(content);  
  149.             JSONObject jsonObject = JSONObject.parseObject(XmltoJsonUtil.xml2JSON(content)) ;    
  150.             JSONObject result_xml = jsonObject.getJSONObject("xml");  
  151.             JSONArray result_code =  result_xml.getJSONArray("result_code");              
  152.             String code = (String)result_code.get(0);  
  153.               
  154.             List<String> data = new ArrayList<String>();              
  155.             if(code.equalsIgnoreCase("FAIL")){  
  156.                 result.setMsg("微信统一订单下单失败");  
  157.                 result.setResultCode("-1");  
  158.                 result.setData(data);  
  159.             }else if(code.equalsIgnoreCase("SUCCESS")){  
  160.                 JSONArray prepay_id = result_xml.getJSONArray("prepay_id");               
  161.                 String prepayId = (String)prepay_id.get(0);  
  162.                 data.add(prepayId);  
  163.                 result.setMsg("微信统一订单下单成功");  
  164.                 result.setResultCode("1");  
  165.                 result.setData(data);  
  166.             }             
  167.             return JSON.toJSONString(result);  
  168.           
  169.         } catch (Exception e) {  
  170.             result.setMsg(e.getMessage());  
  171.             result.setResultCode("-1");  
  172.             return JSON.toJSONString(result);  
  173.         }         
  174.   
  175.     }  
  176.       
  177.     /**  
  178.      * 微信订单回调接口  
  179.      *   
  180.      * @return  
  181.      */  
  182.     @MethodAction(optionDescription = "微信回掉接口"methodName = "/WeiXinPay/notify")  
  183.     @RequestMapping(value = "/notify"method = RequestMethod.POST, produces = "text/html;charset=UTF-8")  
  184.     @ResponseBody  
  185.     public void notify(HttpServletRequest request,HttpServletResponse response){  
  186.         ResultObject result = new ResultObject();// 返回数据结果集合  
  187.         try{  
  188.             request.setCharacterEncoding("UTF-8");    
  189.             response.setCharacterEncoding("UTF-8");    
  190.             response.setContentType("text/html;charset=UTF-8");    
  191.             response.setHeader("Access-Control-Allow-Origin", "*");     
  192.             InputStream in=request.getInputStream();    
  193.             ByteArrayOutputStream out=new ByteArrayOutputStream();    
  194.             byte[] buffer =new byte[1024];    
  195.             int len=0;    
  196.             while((len=in.read(buffer))!=-1){    
  197.                 out.write(buffer, 0, len);    
  198.             }    
  199.             out.close();    
  200.             in.close();    
  201.             String content=new String(out.toByteArray(),"utf-8");//xml数据    
  202.               
  203.             JSONObject jsonObject = JSONObject.parseObject(XmltoJsonUtil.xml2JSON(content)) ;    
  204.             JSONObject result_xml = jsonObject.getJSONObject("xml");  
  205.             JSONArray result_code =  result_xml.getJSONArray("result_code");  
  206.             String code = (String)result_code.get(0);  
  207.               
  208.             if(code.equalsIgnoreCase("FAIL")){  
  209.                 result.setMsg("微信统一订单下单失败");  
  210.                 result.setResultCode("-1");               
  211.               
  212.                 response.getWriter().write(setXml("SUCCESS", "OK"));  
  213.                   
  214.                   
  215.             }else if(code.equalsIgnoreCase("SUCCESS")){  
  216.                 result.setMsg("微信统一订单下单成功");  
  217.                 result.setResultCode("1");    
  218.                   
  219.                 JSONArray out_trade_no = result_xml.getJSONArray("out_trade_no");//订单编号  
  220.                 Map<String,Object> map = new HashMap<String,Object>();  
  221.                 map.put("orderNum", (String)out_trade_no.get(0));  
  222.                 map.put("consumState", 1);  
  223.                 accountWalletService.updateAccountOrderState(map);  
  224.                   
  225.                 response.getWriter().write(setXml("SUCCESS", "OK"));  
  226.                   
  227.             }             
  228.               
  229.              
  230.         }catch(Exception e){  
  231.             result.setMsg(e.getMessage());  
  232.             result.setResultCode("-1");  
  233.             return;  
  234.         }  
  235.           
  236.     }  
  237.       
  238.   
  239.     // 返回用IP地址  
  240.     public String getIpAddr(HttpServletRequest request) {  
  241.         String ip = request.getHeader(" x-forwarded-for ");  
  242.         if (ip == null || ip.length() == 0 || " unknown ".equalsIgnoreCase(ip)) {  
  243.             ip = request.getHeader(" Proxy-Client-IP ");  
  244.         }  
  245.         if (ip == null || ip.length() == 0 || " unknown ".equalsIgnoreCase(ip)) {  
  246.             ip = request.getHeader(" WL-Proxy-Client-IP ");  
  247.         }  
  248.         if (ip == null || ip.length() == 0 || " unknown ".equalsIgnoreCase(ip)) {  
  249.             ip = request.getRemoteAddr();  
  250.         }  
  251.         return ip;  
  252.     }  
  253.   
  254.     // 随机字符串生成  
  255.     public static String getRandomString(int length) { // length表示生成字符串的长度  
  256.         String base = "abcdefghijklmnopqrstuvwxyz0123456789";  
  257.         Random random = new Random();  
  258.         StringBuffer sb = new StringBuffer();  
  259.         for (int i = 0; i < length; i++) {  
  260.             int number = random.nextInt(base.length());  
  261.             sb.append(base.charAt(number));  
  262.         }  
  263.         return sb.toString();  
  264.     }  
  265.       
  266.       
  267.     //拼接xml 请求路径  
  268.     public static String getRequestXML(SortedMap<Object, Object> parame){  
  269.         StringBuffer buffer = new StringBuffer();  
  270.         buffer.append("<xml>");  
  271.         Set set = parame.entrySet();  
  272.         Iterator iterator = set.iterator();  
  273.         while(iterator.hasNext()){  
  274.             Map.Entry entry = (Map.Entry) iterator.next();  
  275.             String key = (String)entry.getKey();  
  276.             String value = (String)entry.getValue();  
  277.             //过滤相关字段sign  
  278.             if("sign".equalsIgnoreCase(key)){  
  279.                 buffer.append("<"+key+">"+"<![CDATA["+value+"]]>"+"</"+key+">");  
  280.             }else{  
  281.                 buffer.append("<"+key+">"+value+"</"+key+">");  
  282.             }             
  283.         }  
  284.         buffer.append("</xml>");  
  285.         return buffer.toString();  
  286.     }  
  287.       
  288.     //创建md5 数字签证  
  289.     public static String createSign(SortedMap<Object, Object> parame){  
  290.         StringBuffer buffer = new StringBuffer();  
  291.         Set set = parame.entrySet();  
  292.         Iterator iterator = set.iterator();  
  293.         while(iterator.hasNext()){  
  294.             Map.Entry entry = (Map.Entry) iterator.next();  
  295.             String key = (String)entry.getKey();  
  296.             Object value = (String)entry.getValue();  
  297.             if(null != value && !"".equals(value) && !"sign".equals(key) && !"key".equals(key)){  
  298.                 buffer.append(key+"="+value+"&");  
  299.             }             
  300.         }  
  301.         buffer.append("key="+APIKEY);  
  302.         String sign =MyMd5Util.md5(buffer.toString()).toUpperCase();   
  303.         System.out.println("签名参数:"+sign);  
  304.         return sign;  
  305.     }  
  306.       
  307.     //返回微信服务  
  308.      public static String setXml(String return_code,String return_msg){    
  309.             return "<xml><return_code><![CDATA["+return_code+"]]></return_code><return_msg><![CDATA["+return_msg+"]]></return_msg></xml>";    
  310.     }    
  311.       
  312.     //模拟微信回调接口  
  313.      public static String callbakcXml(String orderNum){  
  314.          return "<xml><appid><![CDATA[wx2421b1c4370ec43b]]></appid><attach><![CDATA[支付测试]]></attach><bank_type><![CDATA[CFT]]></bank_type><fee_type><![CDATA[CNY]]></fee_type> <is_subscribe><![CDATA[Y]]></is_subscribe><mch_id><![CDATA[10000100]]></mch_id><nonce_str><![CDATA[5d2b6c2a8db53831f7eda20af46e531c]]></nonce_str><openid><![CDATA[oUpF8uMEb4qRXf22hE3X68TekukE]]></openid> <out_trade_no><![CDATA["+orderNum+"]]></out_trade_no>  <result_code><![CDATA[SUCCESS]]></result_code> <return_code><![CDATA[SUCCESS]]></return_code><sign><![CDATA[B552ED6B279343CB493C5DD0D78AB241]]></sign><sub_mch_id><![CDATA[10000100]]></sub_mch_id> <time_end><![CDATA[20140903131540]]></time_end><total_fee>1</total_fee><trade_type><![CDATA[JSAPI]]></trade_type><transaction_id><![CDATA[1004400740201409030005092168]]></transaction_id></xml>";  
  315.      }  
  316.       
  317.       
  318.     public static void main(String[] args) throws Exception{  
  319.         String str = HttpUtil.sendPost("http://localhost:8080/WlsqWS/WeiXinPay/notify", callbakcXml("a313a907f72f4f70b53a46b9773a9d42"));  
  320.         System.out.println("result :"+str);  
  321. //      SortedMap<Object,Object> parame = new TreeMap<Object,Object>();  
  322. //      parame.put("appid", "wxdf26629c37f5b7c1");  
  323. //      parame.put("mch_id", MCHID);  
  324. //      String randomStr = getRandomString(18).toUpperCase();  
  325. //      parame.put("nonce_str", randomStr);  
  326. //      String subject = "余额充值";  
  327. //      parame.put("body", subject);  
  328. //      String orderNum = "3a6154e2a662407c8223971284c372a7";  
  329. //      parame.put("out_trade_no", orderNum);  
  330. //      String money ="1";  
  331. //      parame.put("total_fee", money);  
  332. //      String ip ="127.0.0.1";  
  333. //      parame.put("spbill_create_ip", ip);  
  334. //      parame.put("notify_url", NOTIFYURL);  
  335. //      parame.put("trade_type", TRADETYPE);  
  336. //      String sign =createSign(parame);   
  337. //      parame.put("sign", sign);// 数字签证  
  338. //        
  339. //      String xml = getRequestXML(parame);       
  340. //  
  341. //      String content = HttpUtil.sendPost(UNIFORMORDER, xml);  
  342. //        
  343. //      //成功代码  
  344. //      String result = XmltoJsonUtil.xml2JSON(content);          
  345. //      JSONObject jsonObject = JSONObject.parseObject(result) ;    
  346. //      JSONObject results = jsonObject.getJSONObject("xml");  
  347. //      JSONArray array =  results.getJSONArray("result_code");  
  348. //      String code = (String)array.get(0);  
  349. //      System.out.println(results.toString());  
  350. //      System.out.println(code);  
  351.           
  352.         //失败代码  
  353. //      String result = XmltoJsonUtil.xml2JSON(content);          
  354. //      JSONObject jsonObject = JSONObject.parseObject(result) ;   
  355. //      System.out.println(jsonObject.toString());  
  356.     }  
  357.   
  358. }  


java 工具类:

HttpUtil 类

[html]  view plain  copy
  1. package com.wlsq.kso.util;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.IOException;  
  5. import java.io.InputStream;  
  6. import java.io.InputStreamReader;  
  7. import java.io.OutputStream;  
  8. import java.io.PrintStream;  
  9. import java.io.PrintWriter;  
  10. import java.net.HttpURLConnection;  
  11. import java.net.URL;  
  12. import java.net.URLConnection;  
  13. import java.util.Map;  
  14.   
  15. public class HttpUtil  
  16. {  
  17.   public static final String POST = "POST";  
  18.   public static final String GET = "GET";  
  19.   
  20.   public static String post(String uriString, Map<String, String> params)  
  21.     throws Exception  
  22.   {  
  23.     URL url = new URL(uriString);  
  24.     HttpURLConnection con = (HttpURLConnection)url.openConnection();  
  25.     con.setDoOutput(true);  
  26.     con.setDoInput(true);  
  27.     con.setRequestMethod(RequstMethod.POST.value());  
  28.     con.setRequestProperty(" Content-Type ",   
  29.       " application/x-www-form-urlencoded ");  
  30.     con.setUseCaches(false);  
  31.     con.setInstanceFollowRedirects(true);  
  32.   
  33.     if (params != null) {  
  34.       StringBuffer sb = new StringBuffer();  
  35.       String data = null;  
  36.       byte[] b = null;  
  37.   
  38.       for (String key : params.keySet()) {  
  39.         sb.append(key).append('=').append((String)params.get(key)).append('&');  
  40.       }  
  41.       data = sb.substring(0, sb.length() - 1);  
  42.       b = data.getBytes("UTF-8");  
  43.   
  44.       OutputStream out = con.getOutputStream();  
  45.       out.write(b);  
  46.       out.flush();  
  47.       out.close();  
  48.     }  
  49.   
  50.     InputStream in = con.getInputStream();  
  51.     String responseBody = FileUtil.readAll(in);  
  52.   
  53.     return responseBody;  
  54.   }  
  55.   
  56.   public static String post(String uriString, Map<String, String> params, String authorization)  
  57.     throws Exception  
  58.   {  
  59.     URL url = new URL(uriString);  
  60.     HttpURLConnection con = (HttpURLConnection)url.openConnection();  
  61.     con.setDoOutput(true);  
  62.     con.setDoInput(true);  
  63.     con.setRequestMethod(RequstMethod.POST.value());  
  64.     con.setRequestProperty("Content-Type", "application/json");  
  65.     con.setRequestProperty("Authorization", authorization);  
  66.     con.setUseCaches(false);  
  67.     con.setInstanceFollowRedirects(true);  
  68.   
  69.     if (params != null) {  
  70.       StringBuffer sb = new StringBuffer();  
  71.       String data = null;  
  72.       byte[] b = null;  
  73.   
  74.       for (String key : params.keySet()) {  
  75.         sb.append(key).append('=').append((String)params.get(key)).append('&');  
  76.       }  
  77.       data = sb.substring(0, sb.length() - 1);  
  78.       b = data.getBytes("UTF-8");  
  79.   
  80.       OutputStream out = con.getOutputStream();  
  81.       out.write(b);  
  82.       out.flush();  
  83.       out.close();  
  84.     }  
  85.   
  86.     InputStream in = con.getInputStream();  
  87.     String responseBody = FileUtil.readAll(in);  
  88.   
  89.     return responseBody;  
  90.   }  
  91.   
  92.   public static String jpost(String uriString, Map<String, String> params)  
  93.     throws Exception  
  94.   {  
  95.     URL url = new URL(uriString);  
  96.     HttpURLConnection con = (HttpURLConnection)url.openConnection();  
  97.     con.setDoOutput(true);  
  98.     con.setDoInput(true);  
  99.     con.setRequestMethod(RequstMethod.POST.value());  
  100.     con.setRequestProperty("Content-Type", "application/json");  
  101.     con.setUseCaches(false);  
  102.     con.setInstanceFollowRedirects(true);  
  103.   
  104.     if (params != null) {  
  105.       StringBuffer sb = new StringBuffer();  
  106.       String data = null;  
  107.       byte[] b = null;  
  108.   
  109.       for (String key : params.keySet()) {  
  110.         sb.append(key).append('=').append((String)params.get(key)).append('&');  
  111.       }  
  112.       data = sb.substring(0, sb.length() - 1);  
  113.       b = data.getBytes("UTF-8");  
  114.   
  115.       OutputStream out = con.getOutputStream();  
  116.       out.write(b);  
  117.       out.flush();  
  118.       out.close();  
  119.     }  
  120.   
  121.     InputStream in = con.getInputStream();  
  122.     String responseBody = FileUtil.readAll(in);  
  123.   
  124.     return responseBody;  
  125.   }  
  126.   
  127.   public static String sendGet(String url, String param)  
  128.   {  
  129.     String result = "";  
  130.     BufferedReader in = null;  
  131.     try {  
  132.       String urlNameString = url + "?" + param;  
  133.       URL realUrl = new URL(urlNameString);  
  134.   
  135.       URLConnection connection = realUrl.openConnection();  
  136.   
  137.       connection.setRequestProperty("accept", "*/*");  
  138.       connection.setRequestProperty("Content-Type", "application/json");  
  139.       connection.setRequestProperty("connection", "Keep-Alive");  
  140.       connection.setRequestProperty("user-agent",   
  141.         "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");  
  142.   
  143.       connection.connect();  
  144.   
  145.       Map map = connection.getHeaderFields();  
  146.   
  147. //      for (String key : map.keySet()) {  
  148. //        System.out.println(key + "--->" + map.get(key));  
  149. //      }  
  150.   
  151.       in = new BufferedReader(new InputStreamReader(  
  152.         connection.getInputStream(), "utf-8"));  
  153.       String line;  
  154.       while ((line = in.readLine()) != null)  
  155.       {  
  156.         //String line;  
  157.         result = result + line;  
  158.       }  
  159.     } catch (Exception e) {  
  160.       System.out.println("����GET��������쳣��" + e);  
  161.       e.printStackTrace();  
  162.       try  
  163.       {  
  164.         if (in != null)  
  165.           in.close();  
  166.       }  
  167.       catch (Exception e2) {  
  168.         e2.printStackTrace();  
  169.       }  
  170.     }  
  171.     finally  
  172.     {  
  173.       try  
  174.       {  
  175.         if (in != null)  
  176.           in.close();  
  177.       }  
  178.       catch (Exception e2) {  
  179.         e2.printStackTrace();  
  180.       }  
  181.     }  
  182.     return result;  
  183.   }  
  184.   
  185.   public static String sendPost(String url, String param)  
  186.   {  
  187.     PrintWriter out = null;  
  188.     BufferedReader in = null;  
  189.     String result = "";  
  190.     try {  
  191.       URL realUrl = new URL(url);  
  192.   
  193.       URLConnection conn = realUrl.openConnection();  
  194.   
  195.       conn.setRequestProperty("Content-Type", "application/xml");  
  196.   
  197.       conn.setDoOutput(true);  
  198.       conn.setDoInput(true);  
  199.   
  200.       out = new PrintWriter(conn.getOutputStream());  
  201.   
  202.       out.print(param);  
  203.   
  204.       out.flush();  
  205.   
  206.       in = new BufferedReader(  
  207.         new InputStreamReader(conn.getInputStream()));  
  208.       String line;  
  209.       while ((line = in.readLine()) != null)  
  210.       {  
  211.         //String line;  
  212.         result = result + line;  
  213.       }  
  214.     } catch (Exception e) {  
  215.       System.out.println("���� POST ��������쳣��" + e);  
  216.       e.printStackTrace();  
  217.       try  
  218.       {  
  219.         if (out != null) {  
  220.           out.close();  
  221.         }  
  222.         if (in != null)  
  223.           in.close();  
  224.       }  
  225.       catch (IOException ex)  
  226.       {  
  227.         ex.printStackTrace();  
  228.       }  
  229.     }  
  230.     finally  
  231.     {  
  232.       try  
  233.       {  
  234.         if (out != null) {  
  235.           out.close();  
  236.         }  
  237.         if (in != null)  
  238.           in.close();  
  239.       }  
  240.       catch (IOException ex)  
  241.       {  
  242.         ex.printStackTrace();  
  243.       }  
  244.     }  
  245.     return result;  
  246.   }  
  247.   
  248.   public static enum RequstMethod  
  249.   {  
  250.     GET("GET"), POST("POST");  
  251.   
  252.     private String value;  
  253.   
  254.     private RequstMethod(String value) {  
  255.       this.value = value;  
  256.     }  
  257.   
  258.     public String value() {  
  259.       return this.value;  
  260.     }  
  261.   }  
  262. }  


XmltoJsonUtil 类

[html]  view plain  copy
  1. package com.wlsq.kso.util;  
  2.   
  3. import java.io.ByteArrayInputStream;  
  4. import java.io.InputStream;  
  5. import java.util.HashMap;  
  6. import java.util.LinkedList;  
  7. import java.util.List;  
  8. import java.util.Map;  
  9.   
  10. import org.jdom.Document;    
  11. import org.jdom.Element;    
  12. import org.jdom.input.SAXBuilder;    
  13.   
  14. import com.alibaba.fastjson.JSONObject;  
  15.   
  16. public class XmltoJsonUtil {  
  17.     public static  String xml2JSON(String xml) {    
  18.         JSONObject obj = new JSONObject();    
  19.         try {    
  20.             InputStream is = new ByteArrayInputStream(xml.getBytes("utf-8"));    
  21.             SAXBuilder sb = new SAXBuilder();    
  22.             Document doc = sb.build(is);    
  23.             Element root = doc.getRootElement();    
  24.             obj.put(root.getName(), iterateElement(root));    
  25.             return obj.toString();    
  26.         } catch (Exception e) {    
  27.             e.printStackTrace();    
  28.             return null;    
  29.         }    
  30.     }   
  31.       
  32.      private static Map  iterateElement(Element element) {    
  33.             List jiedian = element.getChildren();    
  34.             Element et = null;    
  35.             Map obj = new HashMap();    
  36.             List list = null;    
  37.             for (int i = 0; i < jiedian.size(); i++) {    
  38.                 list = new LinkedList();    
  39.                 et = (Element) jiedian.get(i);    
  40.                 if (et.getTextTrim().equals("")) {    
  41.                     if (et.getChildren().size() == 0)    
  42.                         continue;    
  43.                     if (obj.containsKey(et.getName())) {    
  44.                         list = (List) obj.get(et.getName());    
  45.                     }    
  46.                     list.add(iterateElement(et));    
  47.                     obj.put(et.getName(), list);    
  48.                 } else {    
  49.                     if (obj.containsKey(et.getName())) {    
  50.                         list = (List) obj.get(et.getName());    
  51.                     }    
  52.                     list.add(et.getTextTrim());    
  53.                     obj.put(et.getName(), list);    
  54.                 }    
  55.             }    
  56.             return obj;    
  57.         }    
  58.        
  59.        
  60.   
  61. }  


MyMd5Util 类

[html]  view plain  copy
  1. package com.wlsq.kso.util;  
  2.   
  3. import java.security.MessageDigest;  
  4. import java.security.NoSuchAlgorithmException;  
  5.   
  6. /**  
  7.  * @author fengcai ouyang  
  8.  * @version V1.0  
  9.  * @Description:  
  10.  * @date 2016/7/23 18:48  
  11.  * @Update by: ${todo}  
  12.  */  
  13. public class MyMd5Util {  
  14.     private static MessageDigest sMd5MessageDigest;  
  15.     private static StringBuilder sStringBuilder;  
  16.   
  17.     private MyMd5Util() {  
  18.     }  
  19.   
  20.     public static String md5(String s) {  
  21.         sMd5MessageDigest.reset();  
  22.         sMd5MessageDigest.update(s.getBytes());  
  23.         byte[] digest = sMd5MessageDigest.digest();  
  24.         sStringBuilder.setLength(0);  
  25.   
  26.         for (int i = 0; i < digest.length; ++i) {  
  27.             int b = digest[i] & 255;  
  28.             if (b < 16) {  
  29.                 sStringBuilder.append('0');  
  30.             }  
  31.   
  32.             sStringBuilder.append(Integer.toHexString(b));  
  33.         }  
  34.   
  35.         return sStringBuilder.toString().toUpperCase();  
  36.     }  
  37.   
  38.     static {  
  39.         try {  
  40.             sMd5MessageDigest = MessageDigest.getInstance("MD5");  
  41.         } catch (NoSuchAlgorithmException var1) {  
  42.   
  43.         }  
  44.   
  45.         sStringBuilder = new StringBuilder();  
  46.     }  
  47. }  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值