**
直接进入正题
**
//单人通知推送
private static String PUSH_INFORM_URL="https://api.netease.im/nimserver/msg/sendAttachMsg.action";
//多人通知推送
private static String PUSH_INFORMS_URL="https://api.netease.im/nimserver/msg/sendBatchAttachMsg.action";
//创建群组
private static final String ADD_GROUP="https://api.netease.im/nimserver/team/create.action";
//移除群主
private static final String REMOVE_GROUP_MANAGER="https://api.netease.im/nimserver/team/changeOwner.action";
//提出成员
private static final String DELETE_USERS="https://api.netease.im/nimserver/team/kick.action";
//添加成员
private static final String ADD_USERS ="https://api.netease.im/nimserver/team/add.action";
private static final String UPDATE="https://api.netease.im/nimserver/team/update.action";
private static final String QUERY_USER="https://api.netease.im/nimserver/team/query.action";
private static final String QUERY_NAME="https://api.netease.im/nimserver/user/getUinfos.action";
//解封网易云信通运ID
private static final String UNBLOCK="https://api.netease.im/nimserver/user/unblock.action";
请求第三方接口,每个对应的功能都有单独的请求地址,同时也要遵循第三方请求的格式
请求网易云信的格式大部分都是一样的只是你的参数和请求的连接不一样,
/**
* @Description:认名管理员
* @Data 10:05 2019/12/12
* @Param [accid]
*/
public static final String addManager(String tid,String owner,String members){
String result=null;
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
HttpPost httpPost = new HttpPost(ADD_MANAGER);
String appKey = CloudSecurityUser.APP_KEY;
String appSecret = CloudSecurityUser.APP_SECRET;
String nonce = UUID.randomUUID().toString().replaceAll("-","");
String curTime = String.valueOf((new Date()).getTime() / 1000L);
String checkSum = CheckSumBuilder.getCheckSum(appSecret, nonce ,curTime);//获取CheckSum
// 设置请求的header
httpPost.addHeader("AppKey", appKey);
httpPost.addHeader("Nonce", nonce);
httpPost.addHeader("CurTime", curTime);
httpPost.addHeader("CheckSum", checkSum);
httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
// 设置请求的参数
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("tid",tid));
nvps.add(new BasicNameValuePair("owner",owner));
nvps.add(new BasicNameValuePair("members",members));
try {
httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8"));
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
// 执行请求
HttpResponse response;
try {
response = httpClient.execute(httpPost);
result=EntityUtils.toString(response.getEntity(), "utf-8");
return result;
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
请求网易认名管理员方法事例
这个大体上分为2部分,上面红的框操作就是设置你的请求,将你们公司创建网易云用户的公钥和私钥放入参数
ADD_MANAGER:网易云信接口请求地址
APP_KEY:公钥
APP_SECRET:密钥
获取随机数和时间和你的密钥经过h5加密请求网易,方法献上:
public class CheckSumBuilder {
private static final char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5',
'6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
// 计算并获取CheckSum
public static String getCheckSum(String appSecret, String nonce, String curTime) {
return encode("sha1", appSecret + nonce + curTime);
}
// 计算并获取md5值
public static String getMd5(String requestBody) {
return encode("md5", requestBody);
}
private static String encode(String algorithm, String value) {
if (value == null) {
return null;
}
try {
MessageDigest messageDigest = MessageDigest.getInstance(algorithm);
messageDigest.update(value.getBytes());
return getFormattedText(messageDigest.digest());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
private static String getFormattedText(byte[] bytes) {
int len = bytes.length;
StringBuilder buf = new StringBuilder(len * 2);
for (int j = 0; j < len; j++) {
buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]);
buf.append(HEX_DIGITS[bytes[j] & 0x0f]);
}
return buf.toString();
}
}
请求后网易会返回你调用接口后的参数
你要根据返回的参数去判断成功还是失败,可以从参数中获取你想要的参数在做业务的逻辑处理
HttpResponse response;
try {
response = httpClient.execute(httpPost);
result=EntityUtils.toString(response.getEntity(), "utf-8");
return result;
博主获取参数方法:将返回的数据转换成字符串类型,最后将字符串传换成json对象去获取里面的参数
群邀请人:
String save = CloudPushMessageUtil.addUsers(tid, owner, jsonArray.toString(), msg);
JSONObjsonject object = JSONObject.parseObject(save);
返回参数String类型,然后转换成JSONObjsonject 对象,再获取里面得值,
具体得返回参数看网易云信IM 开发文档,每个请求返回得参数不同。
code 详细描述
200 操作成功,
201 客户端版本不对,需升级sdk
301 被封禁
302 用户名或密码错误
315 IP限制
403 非法操作或没有权限
404 对象不存在
405 参数长度过长
406 对象只读
408 客户端请求超时
413 验证失败(短信服务)
414 参数错误
415 客户端网络问题
416 频率控制
417 重复操作
418 通道不可用(短信服务)
419 数量超过上限
422 账号被禁用
423 帐号被禁言
431 HTTP重复请求
500 服务器内部错误
503 服务器繁忙
508 消息撤回时间超限
509 无效协议
514 服务不可用
998 解包错误
999 打包错误
群相关错误码
801 群人数达到上限
802 没有权限
803 群不存在
804 用户不在群
805 群类型不匹配
806 创建群数量达到限制
807 群成员状态错误
808 申请成功
809 已经在群内
810 邀请成功
811 @账号数量超过限制
812 群禁言,普通成员不能发送消息
813 群拉人部分成功
814 禁止使用群组已读服务
815 群管理员人数超过上限
音视频、白板通话相关错误码
9102 通道失效
9103 已经在他端对这个呼叫响应过了
11001 通话不可达,对方离线状态
聊天室相关错误码
13001 IM主连接状态异常
13002 聊天室状态异常
13003 账号在黑名单中,不允许进入聊天室
13004 在禁言列表中,不允许发言
13005 用户的聊天室昵称、头像或成员扩展字段被反垃圾
特定业务相关错误码
10431 输入email不是邮箱
10432 输入mobile不是手机号码
10433 注册输入的两次密码不相同
10434 企业不存在
10435 登陆密码或帐号不对
10436 app不存在
10437 email已注册
10438 手机号已注册
10441 app名字已经存在
信令错误码
10404 房间不存在
10405 房间已存在
10406 不在房间内
10407 已经在房间内
10408 邀请不存在或已过期
10409 邀请已经拒绝
10410 邀请已经接受了
10201 对方云信不在线
10202 对方云信不在线,且推送也不可达
10419 房间人数超限
10420 已经在房间内(自己的其他端)
10417 uid冲突
最后献上网易云信返回的code码
网易云信开发官网地址:https://dev.yunxin.163.com/docs/product/
小弟总结这个事例不容易,如果大佬感觉不错的话可以动动您发财的小手点个赞! 感谢