java环信后端接口
//环信代码
/**
环信工具类
*/
@Configuration
public class HXUtil {
private static RestTemplate restTemplate = new RestTemplate();private static final Logger logger = LoggerFactory.getLogger(HXUtil.class);
// 对应环信平台Orgname
private static final String ORG_NAME = “”;
// 对应环信平台Client ID
private static final String CLIENT_ID = “”;
// 对应环信平台Client Secret
private static final String CLIENT_SECRET = “”;
// 对应环信平台appname
private static final String APP_NAME = “”;
// 链接前缀
private static final String URL_PREFIX = “http://a1.easemob.com/” + ORG_NAME + “/” + APP_NAME + “/”;private Token token;
public enum HXMessageType {
txt,// 文本
img,// 图片
loc,// 位置
audio,// 音频
video,// 视频
file// 文件
}/**
- 获取Token
- token存在时间为7天,可以将token存入redis
- @return token
*/
public Token getToken() {
JSONObject body = new JSONObject();
body.put(“grant_type”, “client_credentials”);
body.put(“client_id”, CLIENT_ID );
body.put(“client_secret”, CLIENT_SECRET );
HttpEntity httpEntity = new HttpEntity(body.toString(), null);
ResponseEntity tokenResponseEntity = restTemplate.postForEntity(URL_PREFIX + “token”, httpEntity, Token.class);
token = tokenResponseEntity.getBody();
HttpStatus statusCode = tokenResponseEntity.getStatusCode();
token.setStatusCode(statusCode.value());
if(statusCode.value()==200){
return token;
}else {
return null;
}
}
/**
- 添加用户
- @param username 用户名(唯一非空)
- @param password 密码
- @return 是否成功
*/
public Boolean addUser(String username, String password,String token) {
try {
JSONArray body = new JSONArray();
JSONObject jsonObject = new JSONObject();
jsonObject.put(“username”, username);
jsonObject.put(“password”, password);
body.add(jsonObject);
HttpHeaders headers = new HttpHeaders();
//设置
headers.add(“Authorization”, "Bearer " + token);
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
//通过token授权添加用户
HttpEntity httpEntity = new HttpEntity(body.toString(), getHttpHeaders(MediaType.APPLICATION_JSON, MediaType.APPLICATION_JSON));
ResponseEntity responseEntity = restTemplate.postForEntity(URL_PREFIX + “users”, httpEntity, null);
System.out.println(responseEntity.getStatusCodeValue());
return responseEntity.getStatusCodeValue() == 200;
} catch (RestClientException e) {
e.printStackTrace();
return false;
}
}
/**
- 设置用户属性
*/
public Boolean setUserMeta(UserDto userDto, String userName, String token) {
try {
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
map.add(“nickname”,CodeTransition.resolveToEmojiFromByte(userDto.getNickname()));
map.add(“phone”,userDto.getPhone());
map.add(“avatarurl”,StringUtils.isEmpty(userDto.getHeadImg())?“”:userDto.getHeadImg());HttpHeaders headers = new HttpHeaders();//设置headers.add("Authorization", "Bearer " + token);headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));//通过token授权设置用户属性HttpEntity httpEntity = new HttpEntity(map, headers);JSONObject responseEntity = restTemplate.exchange(URL_PREFIX + "metadata/user/"+userName, HttpMethod.PUT, httpEntity,JSONObject.class).getBody();logger.info("修改用户属性成功,返回接口为{},用户ID{},用户属性{}", responseEntity, userDto, userDto);return true; } catch (RestClientException e) {e.printStackTrace();return false; }
}
/**
- 发送消息
- @param sendUser 发送用户
- @param targetUser 接收用户
- @param msg 发送消息
- @return 是否成功
*/
public Boolean sendToUser(String sendUser, String targetUser, String msg) {
try {
JSONObject body = new JSONObject();
body.put(“target_type”, “users”);
JSONArray targetUserjson = new JSONArray();
targetUserjson.add(targetUser);
body.put(“target”, targetUserjson);
JSONObject msgJson = new JSONObject();
msgJson.put(“type”, HXMessageType.txt.name());
msgJson.put(“msg”, msg);
body.put(“msg”, msgJson);
body.put(“from”, sendUser);
HttpEntity httpEntity = new HttpEntity(body, getHttpHeaders(MediaType.APPLICATION_JSON, MediaType.APPLICATION_JSON));
ResponseEntity responseEntity = restTemplate.postForEntity(URL_PREFIX + “messages”, httpEntity, null);
System.out.println(responseEntity.getStatusCodeValue());
return responseEntity.getStatusCodeValue() == 200;
} catch (RestClientException e) {
e.printStackTrace();
return false;
}
}
/**
- 获取HttpHeaders
- @param contentType 客户端发送类型
- @param accept 响应类型
- @return HttpHeaders
*/
private HttpHeaders getHttpHeaders(MediaType contentType, MediaType… accept) {
HttpHeaders headers = new HttpHeaders();
//设置
headers.add(“Authorization”, "Bearer " + getToken().getAccess_token());
headers.setContentType(contentType != null ? contentType : MediaType.APPLICATION_JSON);
headers.setAccept(Arrays.asList((accept != null && accept.length > 0) ? accept : new MediaType[]{MediaType.APPLICATION_JSON}));
return headers;
}
}
@Service
public class HxService {
private static final Logger logger = LoggerFactory.getLogger(HxService.class);@Autowired
private RedisTemplate<String, String> redisTemplate;public String addHXUser(String username) {HXUtil hxUtil=new HXUtil();Token token2 ;//判断redis中是否存在tokenString hxToken = redisTemplate.opsForValue().get("hxToken");if (!StringUtils.isEmpty(hxToken)){//存在就获取token//String token1 = jedisClientPool.get("token");//判断前端传入token是否和后端token一致/*if (token1.equals(token)){//通过token授权注册环信用户Boolean aBoolean = hxUtil.addUser(username, password,token);}else {//不一致重新更新tokentoken2= hxUtil.getToken();redisTemplate.opsForValue().set("token",token2.getAccess_token());}*/Boolean aBoolean = hxUtil.addUser(username, "123456",hxToken);if(aBoolean){logger.info("---------------------------添加数据成功-----------------------");}else{logger.info("---------------------------环信数据已添加-----------------------");}}else {//token不存在获取tokentoken2 = hxUtil.getToken();redisTemplate.opsForValue().set("hxToken",token2.getAccess_token());//获取tokenhxToken = redisTemplate.opsForValue().get("hxToken");//通过token授权注册用户Boolean aBoolean = hxUtil.addUser(username, "123456",hxToken);if(aBoolean){logger.info("---------------------------添加数据成功-----------------------");}else{logger.info("---------------------------环信数据已添加-----------------------");}}return hxToken;
}public String setHxUserMeta(UserDto userDto) {HXUtil hxUtil = new HXUtil();Token token2 ;//判断redis中是否存在tokenString hxToken = redisTemplate.opsForValue().get("hxToken");if (!StringUtils.isEmpty(hxToken)){Boolean aBoolean = hxUtil.setUserMeta(userDto, String.valueOf(userDto.getId()),hxToken);if(aBoolean){logger.info("---------------------------设置用户属性成功-----------------------");}}else {//token不存在获取tokentoken2 = hxUtil.getToken();redisTemplate.opsForValue().set("hxToken",token2.getAccess_token());//获取tokenhxToken = redisTemplate.opsForValue().get("hxToken");//通过token授权注册用户Boolean aBoolean = hxUtil.setUserMeta(userDto, String.valueOf(userDto.getId()),hxToken);if(aBoolean){logger.info("---------------------------设置用户属性成功-----------------------");}}return hxToken;
}
}
java环信后端接口相关推荐
- java环信聊天记录保存到数据库实体
发现环信的根据时间条件拉取历史消息接口已经停用,就做了个通过导出聊天记录接口保存到数据库实体的功能,分享一下. 大致的思路: 1.通过环信的接口,把前一天24小时的数据压缩包下载到本地 2.把下载后的 ...
- java短信发送接口代码示例demo分享
适用类型:适用于各类办公系统.ERP.CRM.电子商务平台的插件(如网站app短信验证码.群发短信会议通知.会员/客户关系交流.订单生成通知.发货通知.日程提醒.催费通知等等) 接 口特 点: 绿色短 ...
- JAVA 短信API接口调用 附 文档 Demo
JAVA 短信API接口调用 附 文档 Demo 1.请求地址 http://host:port/sms 请求方式可以 POST 和 GET方式,建议采用POST方式 2.参数说明 参数需要 URLE ...
- java 环信 rest api_[huanxin-sdk] 环信 Rest Api Node sdk
The node sdk of Huanxin Rest API for high performance 详细用法请移步:test/,建议使用 redis 存储token 'use strict'; ...
- java短信发送接口开发
发送短信验证码几乎是现在每个网站都要使用到的一个功能,如注册的时候要发送短息验证码,修改密码的时候也要发送.但是第三方提供给我们的接口只是一个方法而已,并没有提供给我们更多的一个良好,可读性强的接口, ...
- java通达信交易接口源码分享
如果大家想自己制作通信达接口,当然可以自行在网上找通信达源码,而且网上也有很多,下面小编就可以直接给大家一套用java语言写的源码了. import java.awt.Button; import j ...
- 环信 java接口实例_java调用环信接口
现在需要实现app中消息禁言功能?需要调用环信的接口,已经有文档了,但是不知道怎么调用?不清楚怎么将环信的接口继承到java代码中?请大家多多指教. 添加禁言 将一个用户禁言.用户被禁言后,将无法在群 ...
- 基于环信接口,开发Web版的即时通讯
最近做项目时需要实现在线聊天的功能,所以借助环信的平台来快速开发 集成环信的主要步骤 1 注册开发者账号 2 服务器端的集成 3 客户端集成 环信WebIM的demo 点击下载 在运行demo的时候需 ...
- 七(6)环信-用户体系集成-联系人管理
课程总结 1.即时通信 环信通信 执行过程 2.用户体系集成 用户注册时分配环信账号 客户端获取环信账号,自动登录环信服务器 3.联系人业务处理 好友申请 查看联系人列表 一. 即时通信-环信介绍 1 ...
最新文章
- [安卓] 12、开源一个基于SurfaceView的飞行射击类小游戏
- gradle构建android项目
- php redis support,PHP 使用 Redis
- “天才”少年!4位90后摘得全球顶尖数学大奖,90%获奖者不满30岁
- IOS基础:ActionSheet(上拉菜单)的实现
- 创建存储过程向表中循环加入数据
- PHP的的指针的特性
- Charles的iOS应用程序
- 如何解决Please ensure that adb is correctly located at......
- Thinkpad X230 黑苹果macOS 10.14 和10. 15驱动AR9285网卡
- 亚马逊养号遛号Selenium自动化测试工具介绍,依托于VMLogin指纹浏览器配套实现。
- kali安装有道词典
- burp 安装 license key not recognized
- 爬虫从头学之Requests+正则表达式爬取猫眼电影top100
- 如何实现windows命令提示符的tab补全
- 地图开发技术报告(百度地图)
- 如何使用微信小程序制作banner轮播图?
- C#语言操作Win7系统任务栏(TaskBar)中程序图标的背景进度条
- XMind Zen 2020 10.3.1注册使用
- cordova build android遇到的问题