实现从“环信”下载聊天记录,显示在本地项目页面的功能(二)—— 获取环信聊天记录
来源:互联网 发布:windows 错误恢复 编辑:程序博客网 时间:2024/05/17 00:54
一、环信即时云简介
网址:http://docs.easemob.com/doku.php?id=start:100serverintegration:30chatlog
本项目通过“安卓客户端”进行专家和用户的聊天功能,聊天内容以json格式保存在环信即时云数据库中。格式大致如下:
二、JavaBean设计:
因为环信中实际的聊天内容是三层嵌套的模式,所以需要建立三层级联的JavaBean来解析并保存数据,我这里设计的格式如下:
三、代码实现:
1、包结构:
项目使用 jeesite 框架,本质是 SpringMVC + Mybatis ,又融合了 Shiro 和 Activiti 的内容。可能因为 jeesite 架构的特殊性,所以需要按照 MVC模型建包,否则可能Spring 类扫描会失效,无法建立 service 层和 dao 层对象。包结构如下:
同时,项目中需要导入环信的jar包,因为jar包中包含了环信用户的一些配置特定的常量,在方法需要调用。否则,或显示没有权限下载数据。代码如下:
@Servicepublic class HXDownloadMessageService{private static final String APPKEY = Constants.APPKEY;/* * 通过app的client_id和client_secret来获取app管理员token */private static Credential credential = new ClientSecretCredential(Constants.APP_CLIENT_ID,Constants.APP_CLIENT_SECRET, Roles.USER_ROLE_APPADMIN);public void downloadHXMessage() {String senvenDayAgo = String.valueOf(System.currentTimeMillis() - 15 * 24 * 60 * 60 * 1000);ObjectNode queryStrNode1 = factory.objectNode();queryStrNode1.put("ql", "select * where timestamp>" + senvenDayAgo);queryStrNode1.put("limit", "1000");ObjectNode messages1 = getChatMessages(queryStrNode1);// 获取环信所有聊天记录System.out.println("================================================");System.out.println("环信所有聊天记录的json:" + messages1.toString());System.out.println("================================================");/* * 获取环信数据库中对话实体 entities 的内容,保存在entities的JSONArray中 */JSONObject jsonObj = JSON.parseObject(messages1.toString());JSONArray entities = jsonObj.getJSONArray("entities");List<HXMessEntity> messEntities = JSON.parseArray(entities.toJSONString(), HXMessEntity.class);}}
/** * 获取HX的json聊天消息 * * @param queryStrNode */public static ObjectNode getChatMessages(ObjectNode queryStrNode) {ObjectNode objectNode = factory.objectNode();// check appKey formatif (!HTTPClientUtils.match("^(?!-)[0-9a-zA-Z\\-]+#[0-9a-zA-Z]+", APPKEY)) {LOGGER.error("Bad format of Appkey: " + APPKEY);objectNode.put("message", "Bad format of Appkey");return objectNode;}try {String rest = "";if (null != queryStrNode && queryStrNode.get("ql") != null&& !StringUtils.isEmpty(queryStrNode.get("ql").asText())) {rest = "ql=" + java.net.URLEncoder.encode(queryStrNode.get("ql").asText(), "utf-8");}if (null != queryStrNode && queryStrNode.get("limit") != null&& !StringUtils.isEmpty(queryStrNode.get("limit").asText())) {rest = rest + "&limit=" + queryStrNode.get("limit").asText();}if (null != queryStrNode && queryStrNode.get("cursor") != null&& !StringUtils.isEmpty(queryStrNode.get("cursor").asText())) {rest = rest + "&cursor=" + queryStrNode.get("cursor").asText();}URL chatMessagesUrl = HTTPClientUtils.getURL(Constants.APPKEY.replace("#", "/") + "/chatmessages?" + rest);// System.out.println("访问网址url:"+chatMessagesUrl.toString());objectNode = HTTPClientUtils.sendHTTPRequest(chatMessagesUrl, credential, null, HTTPMethod.METHOD_GET);} catch (Exception e) {e.printStackTrace();}return objectNode;}
通过 alibaba-fastjson.jar 解析json数据到 HXMessEntity 集合。
0 0
- 实现从“环信”下载聊天记录,显示在本地项目页面的功能(二)—— 获取环信聊天记录
- 实现从“环信”下载聊天记录,显示在本地项目页面的功能(一)—— 功能需求介绍
- 实现从“环信”下载聊天记录,显示在本地项目页面的功能(三)—— 将解析后的数据保存到本地DB中
- 环信即时通讯聊天记录
- 04环信聊天界面 - 加载本地聊天记录
- 环信24小时,删除聊天记录
- 破解微信本地数据库,无法找回删除的聊天记录
- iPhone怎么查微信聊天记录恢复删除的微信聊天记录
- 怎样才能查看爱人的微信聊天记录QQ聊天记录
- Android开发——免Root监听微信的聊天记录(后台秘密发邮件)
- 环信EaseUI集成错误 Unknown type name 'NSString' NSLocalizedString 聊天记录本地保存
- 微信聊天记录备份
- 微信查看聊天记录
- 微信查看聊天记录
- Android逆向之旅—静态方式破解微信获取聊天记录和通讯录信息
- 导出微信聊天记录的工具
- 删除的微信聊天记录怎么恢复?
- 怎么盗取女友的微信聊天记录
- jQuery 的.serialize()
- ansi格式的TXT字符串在ios如何解析
- Raspberry Pi超声波测距样例
- Android无所不能的Intent
- LCT解法解决数据结构神薙bzoj1036
- 实现从“环信”下载聊天记录,显示在本地项目页面的功能(二)—— 获取环信聊天记录
- matlab 连接 mysql 数据库
- static,final,static final的区别
- (从部分老blog转的)FBWF 控制台实用指南
- 一道sql面试题
- 计算机的启动
- 下载
- Uncaught SyntaxError: Unexpected token <
- 视频会议系统终端的分类及特点