Files
quartzPro/.svn/pristine/92/9223edd1c78f5cc0903227429457796ee91266ce.svn-base
T
2017-08-23 12:20:15 +08:00

291 lines
11 KiB
Plaintext

package com.ifish.netease;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.ifish.enums.NeteaseEnum;
import com.ifish.util.IfishUtil;
public class NeteaseIM {
String appKey = "";
String appSecret = "";
private static Logger log = LoggerFactory.getLogger(NeteaseIM.class);
public NeteaseIM(String appKey,String appSecret){
this.appKey=appKey;
this.appSecret=appSecret;
}
/**
* 创建云信ID
* @param accid 云信ID,最大长度32字符,必须保证一个APP内唯一
* @param name 云信ID昵称,最大长度64字符,用来PUSH推送 时显示的昵称
* @param icon 云信ID头像URL,第三方可选填,最大长度1024
* @param props json属性,第三方可选填,最大长度1024字符
* @return
* @throws Exception
*/
public Map<String, String> createAccid(String accid,String name,String icon,String props){
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
String url = "https://api.netease.im/nimserver/user/create.action";
HttpPost httpPost = new HttpPost(url);
String nonce = IfishUtil.getCharAndNumr(10);
String curTime = String.valueOf((new Date()).getTime() / 1000L);
//计算CheckSum
String checkSum = CheckSumBuilder.getCheckSum(appSecret, nonce ,curTime);
//设置请求的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("accid", accid));
nvps.add(new BasicNameValuePair("name", name));
nvps.add(new BasicNameValuePair("icon", icon));
nvps.add(new BasicNameValuePair("props", props));
httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8"));
//执行请求
HttpResponse response = httpClient.execute(httpPost);
//执行结果
String responseStr = EntityUtils.toString(response.getEntity(), "utf-8");
System.out.println(responseStr);
JSONObject json = new JSONObject(responseStr);
String code = json.getString("code");
Map<String, String> map = new HashMap<String, String>();
map.put("code", code);
//200
if(code.equals(NeteaseEnum.status200.getKey())){
JSONObject infoJson = json.getJSONObject("info");
String token = infoJson.getString("token");
map.put("token", token);
}
else if(code.equals(NeteaseEnum.status414.getKey())){
String desc = json.getString("desc");
}
return map;
} catch (Exception e) {
log.error("CreateAccid error message:{},{}",accid,e.toString());
}
return null;
}
/**
* 云信ID基本信息更新
* @param accid 云信ID,最大长度32字符,必须保证一个APP内唯一
* @param token 云信ID可以指定登录token值,最大长度128字符
* @param props json属性,第三方可选填,最大长度1024字符
* @return
* @throws Exception
*/
public Map<String, String> updateAccid(String accid,String token,String props){
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
String url = "https://api.netease.im/nimserver/user/update.action";
HttpPost httpPost = new HttpPost(url);
String nonce = IfishUtil.getCharAndNumr(10);
String curTime = String.valueOf((new Date()).getTime() / 1000L);
//计算CheckSum
String checkSum = CheckSumBuilder.getCheckSum(appSecret, nonce ,curTime);
//设置请求的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("accid", accid));
nvps.add(new BasicNameValuePair("token", token));
nvps.add(new BasicNameValuePair("props", props));
httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8"));
//执行请求
HttpResponse response = httpClient.execute(httpPost);
//执行结果
String responseStr = EntityUtils.toString(response.getEntity(), "utf-8");
JSONObject json = new JSONObject(responseStr);
String code = json.getString("code");
Map<String, String> map = new HashMap<String, String>();
map.put("code", code);
return map;
} catch (Exception e) {
log.error("updateAccid error message:{},{}",accid,e.toString());
}
return null;
}
/**
* 更新并获取新token
* @param accid
* @return
* @throws Exception
*/
public Map<String, String> refreshToken(String accid){
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
String url = "https://api.netease.im/nimserver/user/refreshToken.action";
HttpPost httpPost = new HttpPost(url);
String nonce = IfishUtil.getCharAndNumr(10);
String curTime = String.valueOf((new Date()).getTime() / 1000L);
//计算CheckSum
String checkSum = CheckSumBuilder.getCheckSum(appSecret, nonce ,curTime);
//设置请求的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("accid", accid));
httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8"));
//执行请求
HttpResponse response = httpClient.execute(httpPost);
//执行结果
String responseStr = EntityUtils.toString(response.getEntity(), "utf-8");
JSONObject json = new JSONObject(responseStr);
String code = json.getString("code");
Map<String, String> map = new HashMap<String, String>();
map.put("code", code);
//200
if(code.equals(NeteaseEnum.status200.getKey())){
JSONObject infoJson = json.getJSONObject("info");
String token = infoJson.getString("token");
map.put("token", token);
}
else if(code.equals(NeteaseEnum.status414.getKey())){
String desc = json.getString("desc");
}
return map;
} catch (Exception e) {
log.error("refreshToken error message:{},{}",accid,e.toString());
}
return null;
}
/**
* 发送普通消息
* @param from
* @param to
* @param msg
* @return
*/
public Map<String, String> sendMsg(String from,String to,String msg){
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
String url = "https://api.netease.im/nimserver/msg/sendMsg.action";
HttpPost httpPost = new HttpPost(url);
String nonce = IfishUtil.getCharAndNumr(10);
String curTime = String.valueOf((new Date()).getTime() / 1000L);
//计算CheckSum
String checkSum = CheckSumBuilder.getCheckSum(appSecret, nonce ,curTime);
//设置请求的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("from", from));
nvps.add(new BasicNameValuePair("to", to));
nvps.add(new BasicNameValuePair("ope", "0"));
nvps.add(new BasicNameValuePair("type", "0"));
nvps.add(new BasicNameValuePair("body", "{\"msg\":\""+msg+"\"}"));
httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8"));
//执行请求
HttpResponse response = httpClient.execute(httpPost);
//执行结果
String responseStr = EntityUtils.toString(response.getEntity(), "utf-8");
System.out.println(responseStr);
JSONObject json = new JSONObject(responseStr);
String code = json.getString("code");
Map<String, String> map = new HashMap<String, String>();
map.put("code", code);
//200
if(code.equals(NeteaseEnum.status200.getKey())){
}
else if(code.equals(NeteaseEnum.status414.getKey())){
String desc = json.getString("desc");
}
return map;
} catch (Exception e) {
log.error("refreshToken error message:{}",e.toString());
}
return null;
}
/**
* 批量发送点对点普通消息
* @param fromAccid
* @param toAccids
* @param msg
* @return
*/
public Map<String, String> sendBatchMsg(String fromAccid,String toAccids,String msg){
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
String url = "https://api.netease.im/nimserver/msg/sendBatchMsg.action";
HttpPost httpPost = new HttpPost(url);
String nonce = IfishUtil.getCharAndNumr(10);
String curTime = String.valueOf((new Date()).getTime() / 1000L);
//计算CheckSum
String checkSum = CheckSumBuilder.getCheckSum(appSecret, nonce ,curTime);
//设置请求的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("fromAccid", fromAccid));
nvps.add(new BasicNameValuePair("toAccids", toAccids));
nvps.add(new BasicNameValuePair("type", "0"));
nvps.add(new BasicNameValuePair("body", "{\"msg\":\""+msg+"\"}"));
httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8"));
//执行请求
HttpResponse response = httpClient.execute(httpPost);
//执行结果
String responseStr = EntityUtils.toString(response.getEntity(), "utf-8");
System.out.println(responseStr);
JSONObject json = new JSONObject(responseStr);
String code = json.getString("code");
Map<String, String> map = new HashMap<String, String>();
map.put("code", code);
//200
if(code.equals(NeteaseEnum.status200.getKey())){
}
else if(code.equals(NeteaseEnum.status414.getKey())){
String desc = json.getString("desc");
}
return map;
} catch (Exception e) {
log.error("refreshToken error message:{}",e.toString());
}
return null;
}
public static void main(String[] args) {
List<String> list= new ArrayList<String>();
list.add("hello");
list.add("hello1");
new NeteaseIM("87b0e3315dfc2df08060bcb54246da68", "e62f6c247b46").createAccid("ifish", "爱鱼奇", "", "");
}
}