如何实现Java微信开发中XML传输解析和JSON对象转换的常用工具类编写?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3201个文字,预计阅读时间需要13分钟。
javapackage com.lownsun.wechatOauth.util;
import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.InetAddress;
与微信通信常用工具(xml传输和解析)package com.lownsun.wechatOauth.utl;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.math.NumberUtils;
import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import com.lownsun.wechatOauth.dm.domain.bean.WeiXinPrePay;
public class WeiXinPayUtil {
private static Logger log = Logger.getLogger(WeiXinPayUtil.class);//日记类记录日记
/**
*
* 发送xml数据,获取返回结果封装为map集合
* @param requestUrl 请求接口地址
* @param requestMethod 请求方式(get或post)
* @param outputStr 预支付xml(封装数据)
* @return map集合
*/
public static Map
package com.lownsun.wechatOauth.utl; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import javax.servlet.http.HttpSession; public class WeixinSampleUtil { /** * 随机数生成验证码 * @return 验证码 */ public static String creatNumber(){ int number = (int)Math.ceil((Math.random()*10000));//4位随机数向上取整 return number+""; } /** * 发送短信 * @param phone 用户的手机号码 * @param content 短信内容 * @return */ public static String sendMess(String phone , String content){ String Username = "ycjl"; //在短信宝注册的用户名 String Password = "weiyudns"; //在短信宝注册的密码 StringBuffer httpArg = new StringBuffer(); httpArg.append("u=").append(Username).append("&"); httpArg.append("p=").append(md5(Password)).append("&"); httpArg.append("m=").append(phone).append("&"); httpArg.append("c=").append(encodeUrlString(content, "UTF-8")); String httpUrl=WeiXinOpenConstants.SAMPLE; String result = request(httpUrl, httpArg.toString()); return result; } /** * 发送链接 * @param httpUrl 接口链接 * @param httpArg 拼接参数 * @return */ public static String request(String httpUrl, String httpArg) { BufferedReader reader = null; String result = null; StringBuffer sbf = new StringBuffer(); httpUrl = httpUrl + "?" + httpArg; try { URL url = new URL(httpUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.connect(); InputStream is = connection.getInputStream(); reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); String strRead = reader.readLine(); if (strRead != null) { sbf.append(strRead); while ((strRead = reader.readLine()) != null) { sbf.append("\n"); sbf.append(strRead); } } reader.close(); result = sbf.toString(); } catch (Exception e) { e.printStackTrace(); } return result; } /** * md5加密 * @param plainText 密码 * @return */ public static String md5(String plainText) { StringBuffer buf = null; try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(plainText.getBytes()); byte b[] = md.digest(); int i; buf = new StringBuffer(""); for (int offset = 0; offset < b.length; offset++) { i = b[offset]; if (i < 0) i += 256; if (i < 16) buf.append("0"); buf.append(Integer.toHexString(i)); } } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return buf.toString(); } /** * 对内容进行encodeUrl编码 * @param str 发送内容 * @param charset 编码类型“utf-8” * @return */ public static String encodeUrlString(String str, String charset) { String strret = null; if (str == null) return str; try { strret = java.net.URLEncoder.encode(str, charset); } catch (Exception e) { e.printStackTrace(); return null; } return strret; } } 对 https 请求需要的辅助类
/** * 功能说明:MD5签名工具类 */ public class MD5Util { private static final Logger LOG = LoggerFactory.getLogger(MD5Util.class); /** * 私有构造方法,将该工具类设为单例模式. */ private MD5Util() { } private static final String[] hex = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" }; public static String encode(String password) { try { MessageDigest md5 = MessageDigest.getInstance("MD5"); byte[] byteArray = md5.digest(password.getBytes("utf-8")); String passwordMD5 = byteArrayToHexString(byteArray); return passwordMD5; } catch (Exception e) { LOG.error(e.toString()); } return password; } private static String byteArrayToHexString(byte[] byteArray) { StringBuffer sb = new StringBuffer(); for (byte b : byteArray) { sb.append(byteToHexChar(b)); } return sb.toString(); } private static Object byteToHexChar(byte b) { int n = b; if (n < 0) { n = 256 + n; } int d1 = n / 16; int d2 = n % 16; return hex[d1] + hex[d2]; } } /** * 证书信任管理器(用于https请求) * @author Administrator * */ public class MyX509TrustManager implements X509TrustManager { public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { } public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } public X509Certificate[] getAcceptedIssuers() { return null; } }
本文共计3201个文字,预计阅读时间需要13分钟。
javapackage com.lownsun.wechatOauth.util;
import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.InetAddress;
与微信通信常用工具(xml传输和解析)package com.lownsun.wechatOauth.utl;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.math.NumberUtils;
import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import com.lownsun.wechatOauth.dm.domain.bean.WeiXinPrePay;
public class WeiXinPayUtil {
private static Logger log = Logger.getLogger(WeiXinPayUtil.class);//日记类记录日记
/**
*
* 发送xml数据,获取返回结果封装为map集合
* @param requestUrl 请求接口地址
* @param requestMethod 请求方式(get或post)
* @param outputStr 预支付xml(封装数据)
* @return map集合
*/
public static Map
package com.lownsun.wechatOauth.utl; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import javax.servlet.http.HttpSession; public class WeixinSampleUtil { /** * 随机数生成验证码 * @return 验证码 */ public static String creatNumber(){ int number = (int)Math.ceil((Math.random()*10000));//4位随机数向上取整 return number+""; } /** * 发送短信 * @param phone 用户的手机号码 * @param content 短信内容 * @return */ public static String sendMess(String phone , String content){ String Username = "ycjl"; //在短信宝注册的用户名 String Password = "weiyudns"; //在短信宝注册的密码 StringBuffer httpArg = new StringBuffer(); httpArg.append("u=").append(Username).append("&"); httpArg.append("p=").append(md5(Password)).append("&"); httpArg.append("m=").append(phone).append("&"); httpArg.append("c=").append(encodeUrlString(content, "UTF-8")); String httpUrl=WeiXinOpenConstants.SAMPLE; String result = request(httpUrl, httpArg.toString()); return result; } /** * 发送链接 * @param httpUrl 接口链接 * @param httpArg 拼接参数 * @return */ public static String request(String httpUrl, String httpArg) { BufferedReader reader = null; String result = null; StringBuffer sbf = new StringBuffer(); httpUrl = httpUrl + "?" + httpArg; try { URL url = new URL(httpUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.connect(); InputStream is = connection.getInputStream(); reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); String strRead = reader.readLine(); if (strRead != null) { sbf.append(strRead); while ((strRead = reader.readLine()) != null) { sbf.append("\n"); sbf.append(strRead); } } reader.close(); result = sbf.toString(); } catch (Exception e) { e.printStackTrace(); } return result; } /** * md5加密 * @param plainText 密码 * @return */ public static String md5(String plainText) { StringBuffer buf = null; try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(plainText.getBytes()); byte b[] = md.digest(); int i; buf = new StringBuffer(""); for (int offset = 0; offset < b.length; offset++) { i = b[offset]; if (i < 0) i += 256; if (i < 16) buf.append("0"); buf.append(Integer.toHexString(i)); } } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return buf.toString(); } /** * 对内容进行encodeUrl编码 * @param str 发送内容 * @param charset 编码类型“utf-8” * @return */ public static String encodeUrlString(String str, String charset) { String strret = null; if (str == null) return str; try { strret = java.net.URLEncoder.encode(str, charset); } catch (Exception e) { e.printStackTrace(); return null; } return strret; } } 对 https 请求需要的辅助类
/** * 功能说明:MD5签名工具类 */ public class MD5Util { private static final Logger LOG = LoggerFactory.getLogger(MD5Util.class); /** * 私有构造方法,将该工具类设为单例模式. */ private MD5Util() { } private static final String[] hex = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" }; public static String encode(String password) { try { MessageDigest md5 = MessageDigest.getInstance("MD5"); byte[] byteArray = md5.digest(password.getBytes("utf-8")); String passwordMD5 = byteArrayToHexString(byteArray); return passwordMD5; } catch (Exception e) { LOG.error(e.toString()); } return password; } private static String byteArrayToHexString(byte[] byteArray) { StringBuffer sb = new StringBuffer(); for (byte b : byteArray) { sb.append(byteToHexChar(b)); } return sb.toString(); } private static Object byteToHexChar(byte b) { int n = b; if (n < 0) { n = 256 + n; } int d1 = n / 16; int d2 = n % 16; return hex[d1] + hex[d2]; } } /** * 证书信任管理器(用于https请求) * @author Administrator * */ public class MyX509TrustManager implements X509TrustManager { public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { } public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } public X509Certificate[] getAcceptedIssuers() { return null; } }

