package cn.necsthz.fansbo.service; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import com.google.inject.Inject; import com.jfinal.kit.HttpKit; import cn.necsthz.fansmobile.dao.TblcodemstDao; import cn.necsthz.fansmobile.entity.Tblcodemst; import cn.necsthz.fansmobile.util.CryptUtil; import cn.necsthz.fansmobile.util.DesUtil; public class LanxunService { private Logger logger = Logger.getLogger(getClass()); @Inject TblcodemstDao codemstDao; public boolean uploadFile(String item_id, String filename) throws Exception { // 源地址路径 Tblcodemst code = codemstDao.selectByTypeNoDel("SOURCE_PLAYBACK_VIDEO_PATH"); String source_path; if (code.content1.endsWith("/")) { source_path = code.content1 + filename; } else { source_path = code.content1 + "/" + filename; } // 发布播放地址路径 code = codemstDao.selectByTypeNoDel("PUBLISH_PLAYBACK_VIDEO_PATH"); String publish_path; if (code.content1.endsWith("/")) { publish_path = code.content1 + filename; } else { publish_path = code.content1 + "/" + filename; } // 蓝汛用户名 code = codemstDao.selectByTypeAndSortNoDel("LANXUN_INFO", 0); String cust_id = code.content2; // 蓝汛密码 code = codemstDao.selectByTypeAndSortNoDel("LANXUN_INFO", 1); String passwd = code.content2; // 对称加密Key code = codemstDao.selectByTypeAndSortNoDel("LANXUN_INFO", 2); String deckey = code.content2; try { cust_id = DesUtil.Decrypt(cust_id, deckey); passwd = DesUtil.Decrypt(passwd, deckey); } catch (Exception ex) { logger.error("蓝讯信息对称解密时发生系统异常", ex); throw ex; } String md5 = CryptUtil.getMD5(item_id + cust_id + "chinacache" + passwd); String data = "op=publish&context=<?xml version=\"1.0\" encoding=\"UTF-8\"?><ccsc><cust_id>" + cust_id + "</cust_id><passwd>" + md5 + "</passwd><item_id value=\"" + item_id + "\"><source_path>" + source_path + "</source_path><publish_path>" + publish_path + "</publish_path></item_id></ccsc>"; String result = HttpKit.post("http://vbu.fds.ccgslb.net:8080/fds/soap/receiveTask.php", data); if (StringUtils.isEmpty(result)) { return false; } result = StringUtils.substringBetween(result, "<result>", "</result>"); if (!"SUCCESS".equals(result)) { return false; } return true; } }
============================= 回调函数: public void getXmlResult() { String result = "FAILURE"; Map<String, String[]> requestParams = getRequest().getParameterMap(); logger.debug("蓝讯异步回调:"); logger.debug(requestParams); String xml = requestParams.get("context")[0]; String status = StringUtils.substringBetween(xml, "<op_status>", "</op_status>"); Short delFlg = 3; switch (status) { case "download failed": delFlg = 3; break; case "download finish": delFlg = 4; break; case "sync finish": delFlg = 0; break; default: break; } String item_id = StringUtils.substringBetween(xml, "<item_id value=\"", "\">"); Tblplayback playback = playbackDao.lockById(item_id); if (playback != null) { playback.delFlg = delFlg; playback.updDat = utilDao.getCurTimestamp(); playback.updUsrId = "LanXun"; int res = playbackDao.update(playback); if (res > 0) { result = "SUCCESS"; } } renderText("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><ccsc><result>" + result + "</result><detail></detail></ccsc>"); } ++++++++++++++++++++++++++++++
包含heard : public static JSONObject messageHistory(String date) { StringBuilder data = new StringBuilder(); data.append("date=").append(date); System.out.println("messageHistory data:" + data); String json = HttpKit.post(URL_MESSAGE_HISTORY, data.toString(), getHeaders()); System.out.println("messageHistory result:" + json); JSONObject result = JSONObject.parseObject(json); if (!"200".equals(result.getString("code"))) { throw new ServiceException((int) result.get("code"), "『融云』查询聊天室消息失败"); } return result; } private static Map<String, String> getHeaders() { String nonce = String.valueOf((int) (Math.random() * 1000000)); String timestamp = String.valueOf(System.currentTimeMillis() / 1000); StringBuilder toSign = new StringBuilder(APP_SECRET).append(nonce).append(timestamp); String sign = CryptUtil.SHA1(toSign.toString()); Map<String, String> headers = new HashMap<String, String>(); headers.put("RC-App-Key", APP_KEY); headers.put("RC-Nonce", nonce); headers.put("RC-Timestamp", timestamp); headers.put("RC-Signature", sign); return headers; }