C#关于HttpClient的应用(二):融云IM集成
public class RcHttpClient:BaseHttpClient
{
private String appKey;
private String appSecret; public RcHttpClient()
{
this.appKey = BaseHelper.GetValue("RongCloudAppKey");
this.appSecret = BaseHelper.GetValue("RongCloudSecret");
this.contentType = "application/x-www-form-urlencoded";
} public RcHttpClient(String appKey, String masterSecret)
{
this.appKey = appKey;
this.appSecret = masterSecret;
this.contentType = "application/x-www-form-urlencoded";
} /// <summary>
/// HTTP 验证
/// </summary>
/// <returns></returns>
public override Dictionary<string,string> Authorization()
{
Random rd = new Random();
String nonce = Convert.ToString(rd.Next());
string timestamp = Convert.ToString(BaseHelper.ConvertDateTimeInt(DateTime.Now));
string signature = Sha1.GetHash(this.appSecret + nonce + timestamp); return new Dictionary<string, string>
{
{"App-Key", this.appKey},
{"Nonce", nonce},
{"Timestamp", timestamp},
{"Signature", signature}
};
}
Server层:
public class RcClientServer
{
#region 请求地址
private const String HOST_PATH = "http://api.cn.ronghub.com";
private const String GET_TOKEN_PATH = HOST_PATH + "/user/getToken.json";
private const String CREATE_GROUP_PATH = HOST_PATH + "/group/create.json";
private const String JOIN_GROUP_PATH = HOST_PATH + "/group/join.json";
private const String QUIT_GROUP_PATH = HOST_PATH + "/group/quit.json";
private const String DISMISS_PATH = HOST_PATH + "/group/dismiss.json";
private const String SYNC_GROUP_PATH = HOST_PATH + "/group/sync.json";
private const String SEND_MSG_PATH = HOST_PATH + "/message/publish.json";
private const String BROADCAST_PATH = HOST_PATH + "/message/broadcast.json";
private const String CREATE_CHATROOM_PATH = HOST_PATH + "/chatroom/create.json";
private const String DESTORY_CHATROOM_PATH = HOST_PATH + "/chatroom/destroy.json";
private const String QUERY_CHATROOM_PATH = HOST_PATH + "/chatroom/query.json";
#endregion /// <summary>
/// 获取Token
/// </summary>
/// <param name="userId"></param>
/// <param name="name"></param>
/// <param name="portraitUri"></param>
/// <returns></returns>
public static ResultDTO GetToken(String userId, String name, String portraitUri)
{
var reqParams = new Dictionary<String, String>
{
{"userId", userId},
{"name", name},
{"portraitUri", portraitUri}
};
RcHttpClient client=new RcHttpClient();
var result = client.SendRequest(Method.Post, GET_TOKEN_PATH, client.BuildQueryStr(reqParams));
if (result.status)
{
return WebApi.Success(JsonHelper.ToObject(result.info.ToString())["token"].ToString());
}
return WebApi.Error(result.info);
} /// <summary>
/// 创建群组
/// </summary>
/// <param name="userId"></param>
/// <param name="groupId"></param>
/// <param name="groupName"></param>
/// <remarks>同一用户最多可加入 3000 个群,每个群最大至 3000 人</remarks>
/// <returns></returns>
public static bool CreateGroup(String userId, String groupId, String groupName)
{
var reqParams = new Dictionary<String, String>
{
{"userId", userId},
{"groupId", groupId},
{"groupName", groupName}
};
RcHttpClient client = new RcHttpClient();
var result = client.SendRequest(Method.Post, CREATE_GROUP_PATH, client.BuildQueryStr(reqParams));
return result.status;
} /// <summary>
/// 加入群组
/// </summary>
/// <param name="userId"></param>
/// <param name="groupId"></param>
/// <param name="groupName"></param>
/// <remarks>同一用户最多可加入 3000 个群,每个群最大至 3000 人</remarks>
/// <returns></returns>
public static bool JoinGroup(String userId, String groupId, String groupName)
{
var reqParams = new Dictionary<String, String>
{
{"userId", userId},
{"groupId", groupId},
{"groupName", groupName}
};
RcHttpClient client = new RcHttpClient();
var result = client.SendRequest(Method.Post, JOIN_GROUP_PATH, client.BuildQueryStr(reqParams));
return result.status;
} /// <summary>
/// 退出群组
/// </summary>
/// <param name="userId"></param>
/// <param name="groupId"></param>
/// <returns></returns>
public static bool QuitGroup(String userId, String groupId)
{
var reqParams = new Dictionary<String, String>
{
{"userId", userId},
{"groupId", groupId}
}; RcHttpClient client = new RcHttpClient();
var result = client.SendRequest(Method.Post, QUIT_GROUP_PATH, client.BuildQueryStr(reqParams));
return result.status;
} /// <summary>
/// 解散群组
/// </summary>
/// <param name="userId"></param>
/// <param name="groupId"></param>
/// <returns></returns>
public static bool DismissGroup(String userId, String groupId)
{
var reqParams = new Dictionary<String, String>
{
{"userId", userId},
{"groupId", groupId}
}; RcHttpClient client = new RcHttpClient();
var result = client.SendRequest(Method.Post, DISMISS_PATH, client.BuildQueryStr(reqParams));
return result.status;
} /// <summary>
/// 同步群组
/// </summary>
/// <param name="userId"></param>
/// <param name="groupId"></param>
/// <param name="groupName"></param>
/// <returns></returns>
public static bool SyncGroup(String userId, String[] groupId, String[] groupName)
{
String postStr = "userId=" + userId + "&";
for (int i = ; i < groupId.Length; i++)
{
var id=HttpUtility.UrlEncode(groupId[i], Encoding.UTF8);
var name = HttpUtility.UrlEncode(groupName[i], Encoding.UTF8);
postStr += "group[" + id + "]=" + name + "&";
}
postStr = postStr.Substring(, postStr.LastIndexOf('&')); RcHttpClient client = new RcHttpClient();
var result = client.SendRequest(Method.Post, SYNC_GROUP_PATH, postStr);
return result.status;
} /// <summary>
/// 发送文本消息
/// </summary>
/// <param name="fromUserId"></param>
/// <param name="toUserId"></param>
/// <param name="content"></param>
/// <returns></returns>
public static bool SendTextMessage(string fromUserId,string toUserId,string content)
{
var reqParams = new Dictionary<String, String>
{
{"fromUserId", fromUserId},
{"toUserId", toUserId},
{"objectName", "RC:TxtMsg"},
{"content", content}
};
RcHttpClient client = new RcHttpClient();
var result = client.SendRequest(Method.Post, SYNC_GROUP_PATH, client.BuildQueryStr(reqParams));
return result.status;
}
}
C#关于HttpClient的应用(二):融云IM集成的更多相关文章
- iOS:融云即时通讯快速集成
一.介绍 即时通讯在众多社交软件.生活软件以及教育软件中已经是必备的功能了,在当前国内,即时通讯SDK做的比较不错的有那么几家,例如环信SDK.融云SDK...,这两家做的都很不错,各有千秋吧,要是真 ...
- APICloud平台的融云2.0集成
融云2.0的官方文档地址:http://docs.apicloud.com/端API/开放SDK/rongCloud2 项目须要IM模块,最后还是选择了融云.在iOS原生开发中,融云sdk集成了聊天界 ...
- web 直播&即时聊天------阿里云、融云(二)
上一篇简要主要介绍了融云制作聊天室的基本方法,这次基本属于对上一篇的补充以及进阶...^_^... (ps:吐槽一下,加了三个融云的线下qq群,全部没人解决问题,也不知道建此群的意义,若是民间的话就当 ...
- 融云官方cordova示例使用指南
最近公司要在App里加IM功能,用融云IM.于是下载其cordova版示例:https://github.com/rongcloud/cordova-plugin-rongcloud-im-demo ...
- apicloud+融云实现即时通讯
请尊重作者的辛勤劳动!!! 使用apicloud开发已经快2个月了,起初的目的就是为了实现安卓和苹果的兼容,属于一个试验项目,究竟apicloud是否能够满足公司的要求?最 终看来还是不错的,使用ap ...
- 融云(找到“每个App都有沟通的需求”的细分市场)
近日,国内著名App驾考宝典和融云达成合作,为应用增加IM功能,实现亿级用户之间聊天.消息一出,IM(即时通讯)领域的大佬,同时也是个上线不到两岁的新生力量,再次引发了行业的关注. 对业内人士而言,即 ...
- web 直播&即时聊天------阿里云、融云
随着直播越来越火,所在公司也打算制作自己的直播,所以去了解了这方面,使用后发现还是有些问题需要记录的. 经过分析,制作直播应该是分为两块来做,即直播与实时评论.这里先去制作实时评论,等直播ok后,也会 ...
- web 直播&即时聊天------阿里云、融云(三)
经过前面的知识,基本已经把聊天室的功能搞定了,剩下的就是直播的问题了... 一如既往,阿里云的web demo也是少的可怜,只有一个web播放器(Prismplayer),所以这里主要就此播放器踩的坑 ...
- 融云亮相GDG谷歌女性开发者大会 揭秘IMSDK网络优化策略
4 月 20 日,冷雨阻碍不了天津GDG谷歌女性开发者大会的热烈召开,一众开发者.架构师和科技公司创业者云集一堂,就女性开发者的技术.职场.人生多方面话题展开深入探讨.活动由GDG (谷歌开发者社区) ...
随机推荐
- Windows PowerShell 简介
Powershell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境.微软之所以将Powershell 定位为Power,并不是夸大其词,因为它完全支持对象.其可读性,易用性 ...
- 构建安全的Xml Web Service系列之wse之证书存储位置
原文:构建安全的Xml Web Service系列之wse之证书存储位置 我们在前几天对xml web service的安全性提出了一些建议,大家可以通过以下地址访问: 构建安全的Xml Web Se ...
- 【cocos2dx-3.0beta-制作flappybird】尾随时代潮流,关于引擎升级
cocos2dx3.1版本号会被释放出,本来,我自己想要这个升级到官方的3.0版本号.只是无奈3.0坑的正式版不会做,偶数帧动画是正确及时的问题,果断放弃,随着广大淫民的支持.我已经升级到最新的代码c ...
- Linux/UNIX数据文件和信息系统
数据文件和信息系统 密码文件 在存储/etc/passwd在.以下功能可以用来获得密码文件条目. #include <sys/types.h> #include <pwd.h> ...
- 玩转Web之JavaScript(三)-----javaScript语法总结(三) 窗口/滚动条/文本的相关语法
JS语法集锦(三) 窗口/滚动条/文本 alert("文本") 警告框:警告框经常用于确保用户可以得到某些信息,当警告框出现后,用户需要点击确定按钮才能继续进行操作. con ...
- Android:ViewPager扩展的具体解释——导航ViewPagerIndicator(有图片缓存,异步加载图片)
我们已经用viewpager该. github那里viewpager扩展,导航风格更丰富.这个开源项目ViewPagerIndicator.非常好用,但样品是比较简单,实际用起来是非常不延长.例如,在 ...
- hdu 4691 最长的共同前缀 后缀数组 +lcp+rmq
http://acm.hdu.edu.cn/showproblem.php? pid=4691 去年夏天,更多的学校的种族称号.当时,没有后缀数组 今天将是,事实上,自己的后缀阵列组合rmq或到,但是 ...
- table在 点击线条颜色
效果图: <html> <head> <meta http-equiv="Content-Type" content="text/html; ...
- mac系统连接android电话
mac该系统不能连接android手机问题解决: 1.将电话 2.到场android手机vendor ID: 终端业务CMD: system_profiler SPUSBDataType 在列出的u ...
- 编写爬虫程序的神器 - Groovy + Jsoup + Sublime(转)
写过很多个爬虫小程序了,之前几次主要用C# + Html Agility Pack来完成工作.由于.NET FCL只提供了"底层"的HttpWebRequest和"中层& ...