java 融云推送

注:工具类1
public class RongCloudMethodUtil {
	/**
	 * 获取token
	 *
	 * @param userId
	 * @param name
	 * @param portraitUri
	 */
	public static String getToken(String userId, String name, String portraitUri) {
		String getToken = "https://api.cn.rong.io/user/getToken.json";
		Map<String, String> params = new HashMap<String, String>();
		params.put("userId", userId);
		params.put("name", name);
		params.put("portraitUri", portraitUri);
		byte[] resultArray;
		String token = null;
		try {
			resultArray = RongCloudUtil.post(getToken, params, "UTF-8", 20000);
			String result = new String(resultArray);
			JSONObject obj = JSONObject.fromObject(result);
			token = obj.get("token").toString();
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("没获取到token");
		}
		return token;
	}

	/**
	 * 推送系统信息
	 *
	 * @param content 消息内容
	 * @param fromUserId 1
	 * @param toUserId  userId
	 * @param objectName  RC:TxtMsg
	 * @param pushContent 消息标题
	 * @param pushData 空-安卓  非空:苹果
	 */
	public static void pushSystemMessage(String content, String fromUserId,
			String toUserId, String objectName, String pushContent,
			String pushData) {

		String systemMessage = "https://api.cn.rong.io/message/system/publish.json";
		Map<String, String> params = new HashMap<String, String>();
		// String content="{\"content\":\"2\"}";
		params.put("content", content);
		params.put("fromUserId", fromUserId);
		params.put("toUserId", toUserId);
		params.put("objectName", objectName);
		params.put("pushContent", pushContent);
		params.put("pushData", pushData);
		byte[] resultArray;
		try {
			resultArray = RongCloudUtil.post(systemMessage, params, "UTF-8",
					20000);
			String result = new String(resultArray);
			System.out.println(result);
		} catch (Exception e) {
			System.out.println("发送信息出错了");
		}

	}

	/**
	 * 刷新个人信息
	 *
	 * @param userId
	 * @param name
	 * @param portraitUri
	 */
	public static void refreshUserInformation(String userId, String name,
			String portraitUri) {
		String refresh = "https://api.cn.rong.io/user/refresh.json";
		Map<String, String> params = new HashMap<String, String>();
		params.put("userId", userId);
		params.put("name", name);
		params.put("portraitUri", portraitUri);
		byte[] resultArray;
		try {
			resultArray = RongCloudUtil.post(refresh, params, "UTF-8", 20000);
			String result = new String(resultArray);
			System.out.println(result);
		} catch (Exception e) {
			System.out.println("哎呀,刷新没成功");
		}
	}

	/**
	 * 检查某人是否在线
	 *
	 * @param userId
	 */
	public static void checkOnline(String userId) {
		String checkOnline = "https://api.cn.rong.io/user/checkOnline.json";
		Map<String, String> params = new HashMap<String, String>();
		params.put("userId", userId);
		byte[] resultArray;
		try {
			resultArray = RongCloudUtil.post(checkOnline, params, "UTF-8",
					20000);
			String result = new String(resultArray);
			System.out.println(result);
		} catch (Exception e) {
			System.out.println("系统维护");
		}
	}

	/**
	 * 禁言
	 */
	public static void block(String userId, String minute) {
		String block = "https://api.cn.rong.io/user/block.json";
		Map<String, String> params = new HashMap<String, String>();
		params.put("userId", userId);
		params.put("minute", minute);// 禁言时间,单位为分钟
		byte[] resultArray;
		try {
			resultArray = RongCloudUtil.post(block, params, "UTF-8", 20000);
			String result = new String(resultArray);
			System.out.println(result);
		} catch (Exception e) {
			System.out.println("禁言没成功");
		}
	}

	/**
	 * 解禁用户
	 *
	 * @param userId
	 */
	public static void unblock(String userId) {
		String unblock = "https://api.cn.rong.io/user/unblock.json";
		Map<String, String> params = new HashMap<String, String>();
		params.put("userId", userId);
		byte[] resultArray;
		try {
			resultArray = RongCloudUtil.post(unblock, params, "UTF-8", 20000);
			String result = new String(resultArray);
			System.out.println(result);
		} catch (Exception e) {
			System.out.println("解禁没成功");
		}
	}

	/**
	 * 查询被禁人员
	 */
	public static void queryBlack() {
		String query = "https://api.cn.rong.io/user/block/query.json";
		byte[] resultArray;
		try {
			resultArray = RongCloudUtil.post(query, null, "UTF-8", 20000);
			String result = new String(resultArray);
			System.out.println(result);
		} catch (Exception e) {
			System.out.println("查询没成功");
		}
	}

	/**
	 * 添加黑名单
	 */
	public static void addBlack(String userId, String blackUserId) {
		String add = "https://api.cn.rong.io/user/blacklist/add.json";
		Map<String, String> params = new HashMap<String, String>();
		params.put("userId", userId);
		params.put("blackUserId", blackUserId);
		byte[] resultArray;
		try {
			resultArray = RongCloudUtil.post(add, params, "UTF-8", 20000);
			String result = new String(resultArray);
			System.out.println(result);
		} catch (Exception e) {
			System.out.println("添加没成功");
		}
	}

	/**
	 * 删除黑名单
	 *
	 * @param userId
	 * @param blackUserId
	 */
	public static void removeBlack(String userId, String blackUserId) {
		String remove = "https://api.cn.rong.io/user/blacklist/remove.json";
		Map<String, String> params = new HashMap<String, String>();
		params.put("userId", userId);
		params.put("blackUserId", blackUserId);
		byte[] resultArray;
		try {
			resultArray = RongCloudUtil.post(remove, params, "UTF-8", 20000);
			String result = new String(resultArray);
			System.out.println(result);
		} catch (Exception e) {
			System.out.println("删除没成功");
		}
	}

	/**
	 * 查询所有加黑用户
	 */
	public static void blacklist(String userId, String blackUserId) {
		String blacklist = "https://api.cn.rong.io/user/blacklist/query.json";
		Map<String, String> params = new HashMap<String, String>();
		params.put("userId", userId);
		params.put("blackUserId", blackUserId);
		byte[] resultArray;
		try {
			resultArray = RongCloudUtil.post(blacklist, params, "UTF-8", 20000);
			String result = new String(resultArray);
			System.out.println(result);
		} catch (Exception e) {
			System.out.println("查询加黑名单异常");
		}
	}

	/**
	 * 单聊
	 */
	public static void oneToOneMessege(String content, String fromUserId,
			String toUserId, String objectName, String pushContent,
			String pushData) {
		String oneToOne = "https://api.cn.rong.io/message/private/publish.json";
		Map<String, String> params = new HashMap<String, String>();
		// String content="{\"content\":\"2\"}";
		params.put("content", content);
		params.put("fromUserId", fromUserId);
		params.put("toUserId", toUserId);
		params.put("objectName", objectName);
		params.put("pushContent", pushContent);
		params.put("pushData", pushData);
		byte[] resultArray;
		try {
			resultArray = RongCloudUtil.post(oneToOne, params, "UTF-8", 20000);
			String result = new String(resultArray);
			System.out.println(result);
		} catch (Exception e) {
			System.out.println("单聊信息发送异常");
		}
	}

	/**
	 * 发送群信息
	 *
	 * @param content
	 * @param fromUserId
	 * @param toGroupId
	 * @param objectName
	 * @param pushContent
	 * @param pushData
	 */
	public static void groupMessege(String content, String fromUserId,
			String toGroupId, String objectName, String pushContent,
			String pushData) {
		String groupMessege = "https://api.cn.rong.io/message/group/publish.json";
		Map<String, String> params = new HashMap<String, String>();
		// String content="{\"content\":\"2\"}";
		params.put("content", content);
		params.put("fromUserId", fromUserId);
		params.put("toGroupId", toGroupId);
		params.put("objectName", objectName);
		params.put("pushContent", pushContent);
		params.put("pushData", pushData);
		byte[] resultArray;
		try {
			resultArray = RongCloudUtil.post(groupMessege, params, "UTF-8",
					20000);
			String result = new String(resultArray);
			System.out.println(result);
		} catch (Exception e) {
			System.out.println("群组信息发送异常");
		}
	}

	/**
	 * 发送聊天室消息
	 *
	 * @param content
	 * @param fromUserId
	 * @param toGroupId
	 * @param objectName
	 * @param pushContent
	 * @param pushData
	 */
	public static void chatroom(String content, String fromUserId,
			String toGroupId, String objectName, String pushContent,
			String pushData) {
		String chatroom = "https://api.cn.rong.io/message/chatroom/publish.json";
		Map<String, String> params = new HashMap<String, String>();
		// String content="{\"content\":\"2\"}";
		params.put("content", content);
		params.put("fromUserId", fromUserId);
		params.put("toGroupId", toGroupId);
		params.put("objectName", objectName);
		params.put("pushContent", pushContent);
		params.put("pushData", pushData);
		byte[] resultArray;
		try {
			resultArray = RongCloudUtil.post(chatroom, params, "UTF-8", 20000);
			String result = new String(resultArray);
			System.out.println(result);
		} catch (Exception e) {
			System.out.println("聊天信息发送异常");
		}
	}

	/**
	 * 发送广播消息
	 */
	public static void broadcast(String content, String fromUserId,
			String objectName, String pushContent, String pushData) {
		String broadcast = "https://api.cn.rong.io/message/broadcast.json";
		Map<String, String> params = new HashMap<String, String>();
		// String content="{\"content\":\"2\"}";
		params.put("content", content);
		params.put("fromUserId", fromUserId);
		params.put("objectName", objectName);
		params.put("pushContent", pushContent);
		params.put("pushData", pushData);
		byte[] resultArray;
		try {
			resultArray = RongCloudUtil.post(broadcast, params, "UTF-8", 20000);
			String result = new String(resultArray);
			System.out.println(result);
		} catch (Exception e) {
			System.out.println("广播发送异常");
		}
	}

	/**
	 * 查某个时段会话历史
	 */
	public static void history(String date) {
		String history = "https://api.cn.rong.io/message/history.json";
		Map<String, String> params = new HashMap<String, String>();
		params.put("date", date);
		byte[] resultArray;
		try {
			resultArray = RongCloudUtil.post(history, params, "UTF-8", 20000);
			String result = new String(resultArray);
			System.out.println(result);
		} catch (Exception e) {
			System.out.println("查找历史记录异常");
		}
	}

	/**
	 * 删除信息记录
	 */
	public static void deleteHistory(String date) {
		String deleteHistory = "https://api.cn.rong.io/message/history/delete.json";
		Map<String, String> params = new HashMap<String, String>();
		params.put("date", date);
		byte[] resultArray;
		try {
			resultArray = RongCloudUtil.post(deleteHistory, params, "UTF-8",
					20000);
			String result = new String(resultArray);
			System.out.println(result);
		} catch (Exception e) {
			System.out.println("删除群组异常");
		}
	}

	/**
	 * 同步群组信息
	 *
	 * @param group
	 * @param userId
	 */
	public static void groupSync(String[] group, String userId) {
		String groupSync = "https://api.cn.rong.io/group/sync.json";
		Map<String, String> params = new HashMap<String, String>();
		params.put("userId", "1");
		for (int i = 0; i < group.length; i++) {
			params.put("group[" + i + "]", group[i]);
		}
		byte[] resultArray;
		try {
			resultArray = RongCloudUtil.post(groupSync, params, "UTF-8", 20000);
			String result = new String(resultArray);
			System.out.println(result);
		} catch (Exception e) {
			System.out.println("同步群组信息异常");
		}
	}

	/**
	 * 创建群组
	 */
	public static void createGroup(String userId, String groupId,
			String groupName) {
		String createGroup = "https://api.cn.rong.io/group/create.json";
		Map<String, String> params = new HashMap<String, String>();
		params.put("userId", userId);
		params.put("groupId", groupId);
		params.put("groupName", groupName);
		byte[] resultArray;
		try {
			resultArray = RongCloudUtil.post(createGroup, params, "UTF-8",
					20000);
			String result = new String(resultArray);
			System.out.println(result);
		} catch (Exception e) {
			System.out.println("创建群组异常");
		}
	}

	/**
	 * 加入群组
	 */
	public static void joinGroup(String userId, String groupId, String groupName) {
		String joinGroup = "https://api.cn.rong.io/group/join.json";
		Map<String, String> params = new HashMap<String, String>();
		params.put("userId", userId);
		params.put("groupId", groupId);
		params.put("groupName", groupName);
		byte[] resultArray;
		try {
			resultArray = RongCloudUtil.post(joinGroup, params, "UTF-8", 20000);
			String result = new String(resultArray);
			System.out.println(result);
		} catch (Exception e) {
			System.out.println("加入群组异常");
		}
	}

	/**
	 * 退出群组
	 */
	public static void quitGroup(String userId, String groupId) {
		String quitGroup = "https://api.cn.rong.io/group/quit.json";
		Map<String, String> params = new HashMap<String, String>();
		params.put("userId", userId);
		params.put("groupId", groupId);
		byte[] resultArray;
		try {
			resultArray = RongCloudUtil.post(quitGroup, params, "UTF-8", 20000);
			String result = new String(resultArray);
			System.out.println(result);
		} catch (Exception e) {
			System.out.println("退出群组异常");
		}
	}

	/**
	 * 解散群组
	 */
	public static void dismissGroup(String userId, String groupId) {
		String dismissGroup = "https://api.cn.rong.io/group/dismiss.json";
		Map<String, String> params = new HashMap<String, String>();
		params.put("userId", userId);
		params.put("groupId", groupId);
		byte[] resultArray;
		try {
			resultArray = RongCloudUtil.post(dismissGroup, params, "UTF-8",
					20000);
			String result = new String(resultArray);
			System.out.println(result);
		} catch (Exception e) {
			System.out.println("解散群组异常");
		}
	}

	/**
	 * 刷新群组
	 */
	public static void refreshGroup(String userId, String groupId,
			String groupName) {
		String refreshGroup = "https://api.cn.rong.io/group/refresh.json";
		Map<String, String> params = new HashMap<String, String>();
		params.put("userId", userId);
		params.put("groupId", groupId);
		params.put("groupName", groupName);
		byte[] resultArray;
		try {
			resultArray = RongCloudUtil.post(refreshGroup, params, "UTF-8",
					20000);
			String result = new String(resultArray);
			System.out.println(result);
		} catch (Exception e) {
			System.out.println("刷新群组异常");
		}
	}

	/**
	 * 创建聊天室
	 *
	 * @param chartroom
	 */
	public static void createChatroom(String[] chartroom) {
		String refreshGroup = "https://api.cn.rong.io/chatroom/create.json";
		Map<String, String> params = new HashMap<String, String>();
		for (int i = 0; i < chartroom.length; i++) {
			params.put("chartroom[" + i + "]", "testChartRoom" + i);
		}
		byte[] resultArray;
		try {
			resultArray = RongCloudUtil.post(refreshGroup, params, "UTF-8",
					20000);
			String result = new String(resultArray);
			System.out.println(result);
		} catch (Exception e) {
			System.out.println("创建聊天室异常");
		}
	}

	/**
	 * 注销聊天室
	 */
	public static void destroyChatroom(String chatroomId) {
		String destroyChatroom = "https://api.cn.rong.io/chatroom/destroy.json";
		Map<String, String> params = new HashMap<String, String>();
		params.put("chatroomId", chatroomId);
		byte[] resultArray;
		try {
			resultArray = RongCloudUtil.post(destroyChatroom, params, "UTF-8",
					20000);
			String result = new String(resultArray);
			System.out.println(result);
		} catch (Exception e) {
			System.out.println("注销异常");
		}
	}

	/**
	 * 查询某个聊天室
	 *
	 * @param chatroomId
	 */
	public static void queryChatroom(String chatroomId) {
		String queryChatroom = "https://api.cn.rong.io/chatroom/query.json";
		Map<String, String> params = new HashMap<String, String>();
		params.put("chatroomId", chatroomId);
		byte[] resultArray;
		try {
			resultArray = RongCloudUtil.post(queryChatroom, params, "UTF-8",
					20000);
			String result = new String(resultArray);
			System.out.println(result);
		} catch (Exception e) {
			System.out.println("查询聊天室异常");
		}
	}
}

注:工具类2

public class RongCloudUtil {

	private final static String appkey = "";// 申请的融云key
	private final static String appSecret = "";// 申请的的云secret
	private final static int[] abcde = { 0x67452301, 0xefcdab89, 0x98badcfe,
			0x10325476, 0xc3d2e1f0 };// sha1加密产参数
	// 摘要数据存储数组
	private static int[] digestInt = new int[5];
	// 计算过程中的临时数据存储数组
	private static int[] tmpData = new int[80];

	// 计算sha-1摘要
	private static int process_input_bytes(byte[] bytedata) {
		// 初试化常量
		System.arraycopy(abcde, 0, digestInt, 0, abcde.length);
		// 格式化输入字节数组,补10及长度数据
		byte[] newbyte = byteArrayFormatData(bytedata);
		// 获取数据摘要计算的数据单元个数
		int MCount = newbyte.length / 64;
		// 循环对每个数据单元进行摘要计算
		for (int pos = 0; pos < MCount; pos++) {
			// 将每个单元的数据转换成16个整型数据,并保存到tmpData的前16个数组元素中
			for (int j = 0; j < 16; j++) {
				tmpData[j] = byteArrayToInt(newbyte, (pos * 64) + (j * 4));
			}
			// 摘要计算函数
			encrypt();
		}
		return 20;
	}

	// 格式化输入字节数组格式
	private static byte[] byteArrayFormatData(byte[] bytedata) {
		// 补0数量
		int zeros = 0;
		// 补位后总位数
		int size = 0;
		// 原始数据长度
		int n = bytedata.length;
		// 模64后的剩余位数
		int m = n % 64;
		// 计算添加0的个数以及添加10后的总长度
		if (m < 56) {
			zeros = 55 - m;
			size = n - m + 64;
		} else if (m == 56) {
			zeros = 63;
			size = n + 8 + 64;
		} else {
			zeros = 63 - m + 56;
			size = (n + 64) - m + 64;
		}
		// 补位后生成的新数组内容
		byte[] newbyte = new byte[size];
		// 复制数组的前面部分
		System.arraycopy(bytedata, 0, newbyte, 0, n);
		// 获得数组Append数据元素的位置
		int l = n;
		// 补1操作
		newbyte[l++] = (byte) 0x80;
		// 补0操作
		for (int i = 0; i < zeros; i++) {
			newbyte[l++] = (byte) 0x00;
		}
		// 计算数据长度,补数据长度位共8字节,长整型
		long N = (long) n * 8;
		byte h8 = (byte) (N & 0xFF);
		byte h7 = (byte) ((N >> 8) & 0xFF);
		byte h6 = (byte) ((N >> 16) & 0xFF);
		byte h5 = (byte) ((N >> 24) & 0xFF);
		byte h4 = (byte) ((N >> 32) & 0xFF);
		byte h3 = (byte) ((N >> 40) & 0xFF);
		byte h2 = (byte) ((N >> 48) & 0xFF);
		byte h1 = (byte) (N >> 56);
		newbyte[l++] = h1;
		newbyte[l++] = h2;
		newbyte[l++] = h3;
		newbyte[l++] = h4;
		newbyte[l++] = h5;
		newbyte[l++] = h6;
		newbyte[l++] = h7;
		newbyte[l++] = h8;
		return newbyte;
	}

	private static int f1(int x, int y, int z) {
		return (x & y) | (~x & z);
	}

	private static int f2(int x, int y, int z) {
		return x ^ y ^ z;
	}

	private static int f3(int x, int y, int z) {
		return (x & y) | (x & z) | (y & z);
	}

	private static int f4(int x, int y) {
		return (x << y) | x >>> (32 - y);
	}

	// 单元摘要计算函数
	private static void encrypt() {
		for (int i = 16; i <= 79; i++) {
			tmpData[i] = f4(tmpData[i - 3] ^ tmpData[i - 8] ^ tmpData[i - 14]
					^ tmpData[i - 16], 1);
		}
		int[] tmpabcde = new int[5];
		for (int i1 = 0; i1 < tmpabcde.length; i1++) {
			tmpabcde[i1] = digestInt[i1];
		}
		for (int j = 0; j <= 19; j++) {
			int tmp = f4(tmpabcde[0], 5)
					+ f1(tmpabcde[1], tmpabcde[2], tmpabcde[3]) + tmpabcde[4]
					+ tmpData[j] + 0x5a827999;
			tmpabcde[4] = tmpabcde[3];
			tmpabcde[3] = tmpabcde[2];
			tmpabcde[2] = f4(tmpabcde[1], 30);
			tmpabcde[1] = tmpabcde[0];
			tmpabcde[0] = tmp;
		}
		for (int k = 20; k <= 39; k++) {
			int tmp = f4(tmpabcde[0], 5)
					+ f2(tmpabcde[1], tmpabcde[2], tmpabcde[3]) + tmpabcde[4]
					+ tmpData[k] + 0x6ed9eba1;
			tmpabcde[4] = tmpabcde[3];
			tmpabcde[3] = tmpabcde[2];
			tmpabcde[2] = f4(tmpabcde[1], 30);
			tmpabcde[1] = tmpabcde[0];
			tmpabcde[0] = tmp;
		}
		for (int l = 40; l <= 59; l++) {
			int tmp = f4(tmpabcde[0], 5)
					+ f3(tmpabcde[1], tmpabcde[2], tmpabcde[3]) + tmpabcde[4]
					+ tmpData[l] + 0x8f1bbcdc;
			tmpabcde[4] = tmpabcde[3];
			tmpabcde[3] = tmpabcde[2];
			tmpabcde[2] = f4(tmpabcde[1], 30);
			tmpabcde[1] = tmpabcde[0];
			tmpabcde[0] = tmp;
		}
		for (int m = 60; m <= 79; m++) {
			int tmp = f4(tmpabcde[0], 5)
					+ f2(tmpabcde[1], tmpabcde[2], tmpabcde[3]) + tmpabcde[4]
					+ tmpData[m] + 0xca62c1d6;
			tmpabcde[4] = tmpabcde[3];
			tmpabcde[3] = tmpabcde[2];
			tmpabcde[2] = f4(tmpabcde[1], 30);
			tmpabcde[1] = tmpabcde[0];
			tmpabcde[0] = tmp;
		}
		for (int i2 = 0; i2 < tmpabcde.length; i2++) {
			digestInt[i2] = digestInt[i2] + tmpabcde[i2];
		}
		for (int n = 0; n < tmpData.length; n++) {
			tmpData[n] = 0;
		}
	}

	// 4字节数组转换为整数
	private static int byteArrayToInt(byte[] bytedata, int i) {
		return ((bytedata[i] & 0xff) << 24) | ((bytedata[i + 1] & 0xff) << 16)
				| ((bytedata[i + 2] & 0xff) << 8) | (bytedata[i + 3] & 0xff);
	}

	// 整数转换为4字节数组
	private static void intToByteArray(int intValue, byte[] byteData, int i) {
		byteData[i] = (byte) (intValue >>> 24);
		byteData[i + 1] = (byte) (intValue >>> 16);
		byteData[i + 2] = (byte) (intValue >>> 8);
		byteData[i + 3] = (byte) intValue;
	}

	// 将字节转换为十六进制字符串
	private static String byteToHexString(byte ib) {
		char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A',
				'B', 'C', 'D', 'E', 'F' };
		char[] ob = new char[2];
		ob[0] = Digit[(ib >>> 4) & 0X0F];
		ob[1] = Digit[ib & 0X0F];
		String s = new String(ob);
		return s;
	}

	// 将字节数组转换为十六进制字符串
	private static String byteArrayToHexString(byte[] bytearray) {
		String strDigest = "";
		for (int i = 0; i < bytearray.length; i++) {
			strDigest += byteToHexString(bytearray[i]);
		}
		return strDigest;
	}

	// 计算sha-1摘要,返回相应的字节数组
	public static byte[] getDigestOfBytes(byte[] byteData) {
		process_input_bytes(byteData);
		byte[] digest = new byte[20];
		for (int i = 0; i < digestInt.length; i++) {
			intToByteArray(digestInt[i], digest, i * 4);
		}
		return digest;
	}

	// 计算sha-1摘要,返回相应的十六进制字符串
	public static String getDigestOfString(byte[] byteData) {
		return byteArrayToHexString(getDigestOfBytes(byteData));
	}

	/**
	 * 发送post请求
	 *
	 * @param path
	 *            url地址
	 * @param params
	 *            参数集合
	 * @param encode
	 *            请求编码
	 * @param timeout
	 *            超时时间(秒)
	 * @return byte[] byte数组
	 * @throws Exception
	 */
	public static byte[] post(String path, Map<String, String> params,
			String encode, int timeout) throws Exception {
		byte[] resultBuffer = null;
		Double nonce = Math.floor(Math.random() * 100000 + 100000);
		Long timestamp = Timestamp.valueOf("2015-3-18 00:00:00").getTime();
		String signature = getDigestOfString((appSecret + nonce + timestamp)
				.getBytes());
		StringBuilder parambuilder = new StringBuilder("");
		if (params != null && !params.isEmpty()) {
			for (Map.Entry<String, String> entry : params.entrySet()) {
				parambuilder.append(entry.getKey()).append("=")
						.append(URLEncoder.encode(entry.getValue(), encode))
						.append("&");
			}
			parambuilder.deleteCharAt(parambuilder.length() - 1);
		}
		byte[] data = parambuilder.toString().getBytes();
		URL url = new URL(path);
		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
		conn.setDoOutput(true);
		conn.setUseCaches(false);
		conn.setConnectTimeout(timeout * 1000);
		conn.setReadTimeout(timeout * 1000);
		conn.setRequestMethod("POST");
		conn.setRequestProperty(
				"Accept",
				"image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*");
		conn.setRequestProperty("Accept-Language", "zh-CN");
		conn.setRequestProperty("App-Key", appkey);
		conn.setRequestProperty("Nonce", nonce + "");
		conn.setRequestProperty("Timestamp", timestamp + "");
		conn.setRequestProperty("Signature", signature);
		conn.setRequestProperty(
				"User-Agent",
				"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)");
		conn.setRequestProperty("Content-Type",
				"application/x-www-form-urlencoded");
		conn.setRequestProperty("Content-Length", String.valueOf(data.length));
		conn.setRequestProperty("Connection", "Keep-Alive");
		DataOutputStream outStream = new DataOutputStream(
				conn.getOutputStream());
		outStream.write(data);
		outStream.flush();
		outStream.close();
		if (conn.getResponseCode() == 200) {
			resultBuffer = readStream(conn.getInputStream());
		}
		conn.disconnect();
		return resultBuffer;
	}

	/**
	 * 解析输入流
	 *
	 * @param inStream
	 *            输入流
	 * @return byte[] byte数组
	 * @throws Exception
	 */
	private static byte[] readStream(InputStream inStream) throws Exception {
		ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
		byte[] buffer = new byte[1024];
		int len = -1;
		while ((len = inStream.read(buffer)) != -1) {
			outSteam.write(buffer, 0, len);
		}
		outSteam.close();
		inStream.close();
		return outSteam.toByteArray();
	}
}

注:使用方法

注册用户:RongCloudMethodUtil.getToken("用户唯一标示", "", "")
////消息内容   服务器id  用户id  消息类型    消息标题   空-推送安卓,非空-推送苹果
推送消息:RongCloudMethodUtil.pushSystemMessage(content, fromUserId, toUserId, objectName, pushContent, pushData);
时间: 2024-10-31 23:42:06

java 融云推送的相关文章

Android 高仿微信实时聊天 基于百度云推送

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38799363 ,本文出自:[张鸿洋的博客] 一直在仿微信界面,今天终于有幸利用百度云推送仿一仿微信聊天了~~~ 首先特别感谢:weidi1989分享的Android之基于百度云推送IM ,大家可以直接下载:省了很多事哈,本例中也使用了weidi的部分代码,凡是@author way的就是weidi1989的代码~~ 1.效果图 核心功能也就上面的两张图了~~~我拿着手机和模拟器

erlang-百度云推送Android服务端功能实现-erlang

百度云推送官方地址http://developer.baidu.com/wiki/index.php?title=docs/cplat/push 简单的介绍下原理: 百度云推送支持IOS和Android的云推送.Android支持的还不错,但是IOS一般很难调通.百度云对于IOS的推送来说,他只是做了一个中间的代理,为用户提供接口,优点是使用百度云推送,Android和IOS可以统一管理:缺点是:调通不容易,用户的IOS证书需要上传验证,会直接暴露给第三方,并且IOS的apns支持用户自己构建p

App之百度云推送

下载最新的Android SDK压缩包并解压,在新建工程或已有工程中增加百度云推送功能. 我下载的是 ,里面有一个同名的文件夹,文件夹中有 导入云推送jar包和so文件: 将解压后的libs文件夹中所有文件拷贝到您的工程的libs文件夹中.如果您的工程中没有其他的.so文件,建议只拷贝armeabi文件夹.如果您的工程中还使用了其他的.so文件,只需要拷贝对应目录下的.so文件即可.如果你使用的Android开发环境是Android Stutio,在工程中“src/main”目录中新建名为jni

百度云推送初尝试

今晚(不对,具体应该说是昨晚,哈哈),给师弟师妹开了个分享会,然后打算把他们分到各个师兄那边,让师兄带着他们去学.然后,师妹跑过来问我说,我这边有什么优势,想了想,这个得怎么说啊.然后,就糊弄她说:没优势..(注孤身的节奏啊),然后师妹说她要跑去另一个师兄那边,我问她为什么,然后她跟我说:那边可以学到百度云推送(怪我当时没学,唉浪费了大好机会,哈哈) 想到就因为这么一个原因,就痛失师妹,我不服!! 然后,有了下文. 1.进入官网:http://push.baidu.com/ 2.找到文档中心:h

GCM(谷歌云推送)客户端服务器端开发全指南(服务器篇)

今天我们按照之前所说的步骤介绍GCM云推送服务端的开发,因为服务端的开发比客户端的开发较简单,遵从由易到难,一步一步攻破的原则,所以我先于客户端讲服务端的开发,话不多说,让我们开始吧! 首先我们依旧来到首页 这次我们点击指南,进入到GCM开发Overview,这里概括了GCM客户端服务器端开发流程. 根据以下的流程图我们不难看出服务端和GCM的通信方式有两种 1.Http协议 2.Xmpp协议 Xmpp协议常用于双向通信,我们这里暂时不需要,因此果断选择Http协议来开发. 英语比较好的朋友可以

Android第十三期 - 百度云推送(百度后台版)

这回比较费事儿,我给学弟学妹分解一下,下面开始: 配置部分: 1.去百度云推送注册账号,配置一下,如图: 2.点击消息跳转的配置部分,如图: 3.发送消息的配置,如图: 这样就完成百度后台的发送消息的服务器的配置了. 接着是App的代码部分: 1.MyPushMessageReceiver:  package com.baidu.push.example; import java.text.SimpleDateFormat; import java.util.Date; import java.

百度云推送push的使用

这是我第一个使用的推送服务,百度云推送 废话不多说,开始上内容 功能实现过程: 1. 到百度云推送官网下载最新版本的SDK http://push.baidu.com/sdk/push_client_sdk_for_android 2. 将SDK下的jar包和so文件拉到项目中libs目录下 3. 添加AndroidManifest.XML配置权限 <!-- Push service 运行需要的权限 --><uses-permission android:name="andro

Android源码之百度云推送

使用服务:百度云推送   功能分类:工具            开发工具:Eclipse 支持平台:Android      运行环境:Android       开发语言:Java 下载地址:http://www.devstore.cn/code/info/184.html 源码简介 百度云推送官方Demo,默认编码UTF-8 .导入项目后将AndroidManifest.xml 104行处 api_key 字段值修改为自己的 api_key 方可使用 ! 源码运行截图

Android推送 百度云推送 入门篇

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/27231237 现在app基本都有推送的功能,于是看了下百度云的推送,官方文档和Demo都很到位,记录下使用过程,目标是利用百度云推送最为服务器写个及时通讯的例子~当然了,这是第一篇入门~ 1.第一步就是在百度开发者服务管理中创建项目,然后拿到API key , Secret Key ;这个过程就不多说了,上官网直接申请就行,不复杂. 2.下载云推送的客户端SDK,SDK的压缩文