`
waterdh
  • 浏览: 97066 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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数据的解析和生成都至关重要,一个字段错误就不能进入下个环节。



2
0
分享到:
评论

相关推荐

    ABB工业机器人-小机器人-IRB-120

    ABB工业机器人-小机器人-IRB-120

    ABB工业机器人-IRB 460多功能工业机器人.pdf

    ABB工业机器人-IRB 460多功能工业机器人pdf,IRB 460 是全球最快的四轴多功能工业机器人,能显著缩短各项 作业的节拍时间,大幅提升生产效率。这款紧凑型的 4 轴机器人 到达距离为 2.4 m,有效荷重 110 kg;荷重 60 ...

    工业机器人现场编程-使用workvisual软件配置机器人-课件.pptx

    使用workvisual软件配置机器人 工业机器人现场编程-使用workvisual软件配置机器人-课件全文共29页,当前为第1页。 学习目标和技能 学习目标 连接机器人与电脑途径 查找项目途径 打开项目途径 在workvisual'里安装...

    工业机器人-数码显示.7z

    【标题】:“工业机器人-数码显示.7z”这一压缩包文件主要涵盖了工业机器人领域中与数码显示技术相关的资料。工业机器人是自动化生产中的关键设备,它们能够执行精确、重复的任务,提高生产效率和质量。数码显示技术...

    重载码垛机器人-A1-模型

    重载码垛机器人-A1-模型技术要求和装配规范 重载码垛机器人-A1-模型是指一种高级的机器人设备,旨在提高生产效率和减少人工劳动强度。为了确保机器人的正常运转和高效工作,需要满足一定的技术要求和装配规范。本文...

    安川机器人-操作说明书-通用篇.pdf

    今天,我们将深入探讨《安川机器人-操作说明书-通用篇》中的关键内容,旨在帮助用户掌握如何安全有效地使用安川MOTOMAN NX100机器人。 首先,安全意识是使用机器人时最为重要的前提。在《安川机器人-操作说明书-...

    安川机器人-MS165产品样本.pdf

    安川机器人-MS165产品样本pdf,简介:安川工业机器人-最适合点焊的机器人MOTOMAN-MS165/MS210  诞生更加追求更高生产效率的机器人。  通过新型减震控制实现高速化  扩大搭载点焊枪时动作范围  机器人小型化,细长...

    RM2020-上海交大-步兵机器人-开源资料.zip

    本次我们将深入探讨基于"RM2020-上海交大-步兵机器人-开源资料.zip"的步兵机器人设计与开发,通过分析提供的README.txt、效果展示、说明文档、三维图纸和二维图纸,揭示其中蕴含的技术细节和创新理念。 1. **...

    乐高培训-机器人--编程资料

    乐高培训-机器人--

    ABB机器人--DEVICENET--通信设置

    ABB机器人--DEVICENET--通信设置 This manual describes the option DeviceNet Master/Slave and contains instructions for the configuration. It also describes the configuration of boards and devices.

    微信机器人-WeChatRobot.zip

    微信机器人-WeChatRobot

    发那科-M410-iB-机器人-样本.pdf

    发那科-M410-iB-机器人-样本pdf,发那科-M410-iB-机器人-样本

    abb机器人-pc-sdk

    abb机器人-pc-sdk

    唐山松下机器人-机器人培训的理想选择-松下机器人虚拟教学系统.pdf

    唐山松下机器人-机器人培训的理想选择-松下机器人虚拟教学系统pdf,简介:机器人虚拟教学系统YA -1UPCT2  机器人培训的理想选择  实现了机器人操作培训的离线化  使用与实机相同的示教器  唐山松下产业机器有限...

    安川机器人-弧焊机器人.pdf

    安川机器人-弧焊机器人pdf,安川机器人-弧焊机器人:为了使机器人更优化,我们提高了动作的自由度,紧凑并缩小了机器人的体型。机器人能够被高密度的安置,这一点为客户在生产设备上节省了空间。我们把像这样能节省...

    工业机器人-part2.zip

    在我们继续深入探索工业机器人的世界时,"工业机器人-part2.zip"为我们提供了一份宝贵的资源。这份压缩包包含了两份重要的文档:part2.pdf和工业机器人-part2.pdf,它们将带领我们进一步理解工业机器人的核心技术、...

    ABB机器人-IRB 7600大功率机器人.pdf

    ABB机器人-IRB 7600大功率机器人pdf,ABB 的新型大功率机器人家族的问世,为您开辟了一个充满机遇 的全新世界。它推出了承重能力分别为 500kg、400kg、340kg 和 150kg 五种版本的产品。IRB7600 可应用于各种行业的...

    水下机器人-毕业论文编程资料

    水下机器人-毕业论文

    基于Java技术的校园智能聊天机器人--晓同.pdf

    基于Java技术的校园智能聊天机器人--晓同.pdf

Global site tag (gtag.js) - Google Analytics