MSN机器人-头像显示
这里只描述下如何设置机器人的头像,并且传输给用户。
1.使用CHG指令告诉MSN服务器你更换了头像
例如: CHG 15 NLN 1610612736 [ MSNObjectStr ]
CHG指令格式不介绍了,[msnobjectStr]字符串的生成,这里给出代码,最终需要urlencode下:
public class MSNObject {
private String creator; private String type; private String sha1d; private String sha1c; private String size; private String location; private String friendly;
public static MSNObject parse(String msnObjStr) { if (msnObjStr == null) return null; MSNObject obj = new MSNObject(); String regex = "\\s+([^\\=]+)\\=\"([^\"]+)\""; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(msnObjStr); while (m.find()) { try { obj.getClass().getMethod("set" + toLowerUp1Case(m.group(1)), new Class[] { String.class }).invoke(obj, m.group(2)); } catch (Exception e) { e.printStackTrace(); } }
return obj; }
public String getCreator() { return creator; }
public void setCreator(String creator) { this.creator = creator; }
public String getSha1d() { return sha1d; }
public void setSha1d(String sha1d) { this.sha1d = sha1d; }
public String getFriendly() { return friendly; }
public void setFriendly(String friendly) { this.friendly = friendly; }
public String getType() { return type; }
public void setType(String type) { this.type = type; }
public String getSize() { return size; }
public void setSize(String size) { this.size = size; }
public String getLocation() { return location; }
public void setLocation(String location) { this.location = location; }
public static String toLowerUp1Case(String str){ StringBuffer sb = new StringBuffer(str); sb.setCharAt(0, Character.toUpperCase(sb.charAt(0))); for (int i = 1; i < sb.length(); i++) { Character temp = sb.charAt(i); sb.setCharAt(i, Character.toLowerCase(temp)); } return sb.toString(); }
public String toString(){ StringBuilder sb = new StringBuilder(); sb.append("<msnobj Creator=\""); sb.append(creator); sb.append("\" Size=\""); sb.append(size); sb.append("\" Type=\""); sb.append(type); sb.append("\" Location=\""); sb.append(location); sb.append("\" Friendly=\""); sb.append(friendly); sb.append("\" SHA1D=\""); sb.append(sha1d); StringBuilder sha1c = new StringBuilder(); sha1c.append("Creator"); sha1c.append(creator); sha1c.append("Size"); sha1c.append(size); sha1c.append("Type"); sha1c.append(type); sha1c.append("Location"); sha1c.append(location); sha1c.append("Friendly"); sha1c.append(friendly); sha1c.append("SHA1D"); sha1c.append(sha1d); try{ sb.append("\" SHA1C=\""+StringUtil.sha1(sha1c.toString().getBytes("utf-8"))); }catch(Exception e){} sb.append("\"/>"); return sb.toString().replaceAll("\\n",""); }
public String getSha1c() { return sha1c; }
public void setSha1c(String sha1c) { this.sha1c = sha1c; }
下面是SHA-1摘要的base64加密字符串方法:
public static String sha1(byte[] data) { try { MessageDigest md = MessageDigest.getInstance("SHA-1"); md.update(data); byte[] b = md.digest(); return new BASE64().encode(b); } catch (Exception e) { e.printStackTrace(); return null; } }
2.当对方和你的机器人通讯的时候,对方msn发出一个p2p请求。
3.应答请求invite acknowledge,并且回复200 OK p2p消息
4.对方回复200 OK acknowledge
5.你告诉对方Data prepare
6.对方响应Data prepare acknowledge
7.发送p2p data数据
8.对方回复p2p data acknowledge
9.对方回复bye p2p 消息
10.你响应bye acknowlege
这里面需要理解binaryheader中的各字段的含义:
每次p2p数据的解析和生成都至关重要,一个字段错误就不能进入下个环节。
MSN机器人-头像显示相关推荐
- 准备让MSN机器人可以显示头像
网上找了一圈,没有什么资料,没办法,只能自己截取数据包分析了.通过IRIS截取了关于头像数据传送的内容. 转载于:https://www.cnblogs.com/enhydraboy/archive/ ...
- android高仿微信UI点击头像显示大图片效果
用过微信的朋友朋友都见过微信中点击对方头像显示会加载大图,先贴两张图片说明下: 这种UI效果对用户的体验不错,今天突然有了灵感,试着去实现,结果就出来了.. 下面说说我的思路: 1.点击图片时跳转到另 ...
- 解决GitHub中头像显示异常、设置不了头像、README图片无法显示等问题
解决GitHub中头像显示异常.设置不了头像.README图片无法显示等问题 很多时候在访问 GitHub 官网时容易出现 GitHub 头像显示异常的问题.虽然这个问题无关痛痒,不过对于有强迫症 ...
- 用C#写MSN机器人
临近转行,最近终于空下来了.不当程序员的日子真是舒服.也就有了点时间,真真正正的做点自己想玩的玩意.闲着无聊.想来想去.2004年里最让我感兴趣的也就是MSN机器人了.有趣呵.所以自己也做了一个.不过 ...
- 微擎不升级解决头像显示问题。
微擎不升级解决头像显示问题. 参考文章: (1)微擎不升级解决头像显示问题. (2)https://www.cnblogs.com/102442/p/8598290.html 备忘一下.
- SharePoint2013的头像显示和读取
前言 有个时候SP的二次开发,需要用代码获取头像显示,如SP基于AD验证,AD有头像属性,做为头像数据来源(因为Exchange和lync的头像也来自AD),说道这里大家都知道有2种办法,一种从AD属 ...
- 机器人战争显示服务器连接,战争机器人总是显示无法连接网络
战争机器人这款游戏相信大家都不陌生吧,最近小编经常收到战争机器人总是显示无法连接网络问题的反馈,接下来小编就为大家提供几种常见的处理方案. 战争机器人游戏简介 War Robots 是一款充满动作场面 ...
- 如何让联系人头像显示联系人姓名的第一个汉字
http://www.cnblogs.com/Lefter/p/3804255.html 如何让联系人头像显示联系人姓名的第一个汉字 在android 4.4.3上面,联系人的头像默认显示首字母,但是 ...
- 点击添加MSN机器人小新,为您收听下载MSDN中文网络广播课程加油助力
为了使您收听下载 MSDN 中文网络广播课程更加方便快捷,我们推荐您使用由一些爱好者开发的 MSN 机器人小新.小新将为您提供课程查询,课程下载,预约课程三大板块的服务: 在课程查询板块中您可以方便地 ...
- 解决Github网页上头像显示失败的问题
最近不知道为什么突然GitHub上的头像显示不出了. 打开控制台,错误是Failed to load resource: net::ERR_CERT_COMMON_NAME_INVALID 实际上,可 ...
最新文章
- SpringBoot BasicService
- C语言 · 求存款
- [摘录]遇见未知的自己(一)
- kafka读写 java_java-Kafka流:从应用程序的每个实例中的所有分区读取
- 第25月第2天 Django-By-Example项目记录01
- junit测试spring_使用Spring JUnit规则进行参数化集成测试
- ioc spring 上机案例_通过实例解析Spring Ioc项目实现过程
- 红黑树的红黑标志有什么用
- linux awk 管道,shell使用管道,配合awk,一句代码清空大于设定大小的日志文件
- Linux下NTP时间同步客户端配置
- 【血糖检测】基于matlab改进深度回归网络的无创血糖检测【含Matlab源码 1572期】
- 钉钉 消息防撤回 分析
- mac os 下 打开 JXM 文件
- 企业微信第三方服务商应用开发及上架教程
- Galaxy Note8面世,“三维立体”发布会传递怎样的信号?
- if_attact中几个宏定义
- 写一个用矩形法求定积分的通用函数,分别求: 		 		∫(0,1) sinxdx	,	∫(0,1)cosxdx	,	∫(0,1)e^xdx 。
- 10.5日饿了么复活了,大家凑合用用吧~(偶尔更新~)
- 网速是什么意思?带宽是什么意思?1M网速的下载速度应是多少?[转.baidu]
- 磁盘类型由动态转换成基本
热门文章
- 求点到直线距离,可以分辨点在直线左边还是右边
- 苹果x来电闪光灯怎么设置_免费设置来电视频彩铃,安卓苹果都适用!
- 2020阿里笔试编程题
- Flink 动态配置(参数 算子 CEP)
- 关于下载Keil5无法打开keil4文件的问题解决方案
- python如何使用jieba库_Python jieba库的使用
- python美化excel_python3哪个库可以实现格式美化?
- 基于JSP实现学校社团管理系统
- c lua mysql 扩展_lua安装及luarocks安装mysql扩展
- 视频去模糊论文阅读-Cascaded Deep Video Deblurring Using Temporal Sharpness Prior