这里只描述下如何设置机器人的头像,并且传输给用户。
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机器人-头像显示相关推荐

  1. 准备让MSN机器人可以显示头像

    网上找了一圈,没有什么资料,没办法,只能自己截取数据包分析了.通过IRIS截取了关于头像数据传送的内容. 转载于:https://www.cnblogs.com/enhydraboy/archive/ ...

  2. android高仿微信UI点击头像显示大图片效果

    用过微信的朋友朋友都见过微信中点击对方头像显示会加载大图,先贴两张图片说明下: 这种UI效果对用户的体验不错,今天突然有了灵感,试着去实现,结果就出来了.. 下面说说我的思路: 1.点击图片时跳转到另 ...

  3. 解决GitHub中头像显示异常、设置不了头像、README图片无法显示等问题

    解决GitHub中头像显示异常.设置不了头像.README图片无法显示等问题   很多时候在访问 GitHub 官网时容易出现 GitHub 头像显示异常的问题.虽然这个问题无关痛痒,不过对于有强迫症 ...

  4. 用C#写MSN机器人

    临近转行,最近终于空下来了.不当程序员的日子真是舒服.也就有了点时间,真真正正的做点自己想玩的玩意.闲着无聊.想来想去.2004年里最让我感兴趣的也就是MSN机器人了.有趣呵.所以自己也做了一个.不过 ...

  5. 微擎不升级解决头像显示问题。

    微擎不升级解决头像显示问题. 参考文章: (1)微擎不升级解决头像显示问题. (2)https://www.cnblogs.com/102442/p/8598290.html 备忘一下.

  6. SharePoint2013的头像显示和读取

    前言 有个时候SP的二次开发,需要用代码获取头像显示,如SP基于AD验证,AD有头像属性,做为头像数据来源(因为Exchange和lync的头像也来自AD),说道这里大家都知道有2种办法,一种从AD属 ...

  7. 机器人战争显示服务器连接,战争机器人总是显示无法连接网络

    战争机器人这款游戏相信大家都不陌生吧,最近小编经常收到战争机器人总是显示无法连接网络问题的反馈,接下来小编就为大家提供几种常见的处理方案. 战争机器人游戏简介 War Robots 是一款充满动作场面 ...

  8. 如何让联系人头像显示联系人姓名的第一个汉字

    http://www.cnblogs.com/Lefter/p/3804255.html 如何让联系人头像显示联系人姓名的第一个汉字 在android 4.4.3上面,联系人的头像默认显示首字母,但是 ...

  9. 点击添加MSN机器人小新,为您收听下载MSDN中文网络广播课程加油助力

    为了使您收听下载 MSDN 中文网络广播课程更加方便快捷,我们推荐您使用由一些爱好者开发的 MSN 机器人小新.小新将为您提供课程查询,课程下载,预约课程三大板块的服务: 在课程查询板块中您可以方便地 ...

  10. 解决Github网页上头像显示失败的问题

    最近不知道为什么突然GitHub上的头像显示不出了. 打开控制台,错误是Failed to load resource: net::ERR_CERT_COMMON_NAME_INVALID 实际上,可 ...

最新文章

  1. SpringBoot BasicService
  2. C语言 · 求存款
  3. [摘录]遇见未知的自己(一)
  4. kafka读写 java_java-Kafka流:从应用程序的每个实例中的所有分区读取
  5. 第25月第2天 Django-By-Example项目记录01
  6. junit测试spring_使用Spring JUnit规则进行参数化集成测试
  7. ioc spring 上机案例_通过实例解析Spring Ioc项目实现过程
  8. 红黑树的红黑标志有什么用
  9. linux awk 管道,shell使用管道,配合awk,一句代码清空大于设定大小的日志文件
  10. Linux下NTP时间同步客户端配置
  11. 【血糖检测】基于matlab改进深度回归网络的无创血糖检测【含Matlab源码 1572期】
  12. 钉钉 消息防撤回 分析
  13. mac os 下 打开 JXM 文件
  14. 企业微信第三方服务商应用开发及上架教程
  15. Galaxy Note8面世,“三维立体”发布会传递怎样的信号?
  16. if_attact中几个宏定义
  17. 写一个用矩形法求定积分的通用函数,分别求: ∫(0,1) sinxdx , ∫(0,1)cosxdx , ∫(0,1)e^xdx 。
  18. 10.5日饿了么复活了,大家凑合用用吧~(偶尔更新~)
  19. 网速是什么意思?带宽是什么意思?1M网速的下载速度应是多少?[转.baidu]
  20. 磁盘类型由动态转换成基本

热门文章

  1. 求点到直线距离,可以分辨点在直线左边还是右边
  2. 苹果x来电闪光灯怎么设置_免费设置来电视频彩铃,安卓苹果都适用!
  3. 2020阿里笔试编程题
  4. Flink 动态配置(参数 算子 CEP)
  5. 关于下载Keil5无法打开keil4文件的问题解决方案
  6. python如何使用jieba库_Python jieba库的使用
  7. python美化excel_python3哪个库可以实现格式美化?
  8. 基于JSP实现学校社团管理系统
  9. c lua mysql 扩展_lua安装及luarocks安装mysql扩展
  10. 视频去模糊论文阅读-Cascaded Deep Video Deblurring Using Temporal Sharpness Prior