支持QQ HTTP协议的处事器探寻 各人大概会被一些假像所疑惑,大概会以为QQ的HTTP处事器是基于80口举办通讯的(如:218.17.209.23:80),着实否则,真正基于HTTP的处事器应该是:http://tqq.tencent.com:8000,它是一个通过8000口举办通信的处事器。 因为QQ的HTTP处事器并不支持HTTP协议中GET要领,它支持POST要领。以是我们要给QQ的HTTP协议传参数,那么就必需要用POST方法才行。 2、C#和DELPHI是实现HTTP的POST要领的通讯。 C#: C#里System.Web空间下提供了一个叫做WebClient的工具,行使此工具就可以使C#直接对处事器发送WEB客户端的哀求。那么我们要对处事器提交POST要领那么就必需行使其UploadData()要领才行。起首把要哀求的信息先转换为字节(由于POST提交的是字符的流数据),然后再做为UploadData()的参数。行使UploadData()举办数据提交,最后返回,POST的回馈信息。如下: WebClient _client = new WebClient(); string postValues = "VER=1.0&CMD=Query_Stat&SEQ=12321&UIN=29501213&TN=50&UN=0"; Byte[] byteArray = System.Text.Encoding.ASCII.GetBytes(postValues); Byte[] pageData = _client.UploadData(Host,"POST",byteArray); 这样,我们就操作C#举办了一次HTTP的POST要领提交了。 值在传入、返回时,其是基于UTF-8举办的,C#表现中文是很常. 3、实现QQ的用户登录。 在QQ通讯顶用户必需要登录后才可以举办相互发送信息等。QQ的登录是很要害的,各人所看到的用户在线,并不是用户的QQ一向毗连着处事器,而是按时发送消信给处事器,证明本身还连着线,假如超出时刻QQ就以为用户已经掉线了。 在登录协议中,QQ的暗码是用尺度的MD5来举办加密,而C#自已带有,可是直接用不了,必须举办处理赏罚后,才气使其酿成尺度的MD5,处理赏罚代码如下:
public static string MD5(string toCryString) { MD5CryptoServiceProvider hashmd5; hashmd5 = new M D5CryptoServiceProvider(); return BitConverter.ToString(hashmd5.ComputeHash(Encoding.Default.GetBytes(toCryString))).Replace("-","").ToLower();//asp是小写,把全部字符变小写} 相识QQ是怎样对用户暗码加密后,那么我们就开始真正,理会QQ的HTTP登录协议了,我们把协议当传POST的参数传给处事器,而处事器则回馈响应的信息给客户端: 传入协议: VER=1.1&CMD=Login&SEQ=&UIN=&PS=&M5=1&LC=9326B87B234E7235 VER是用来声名QQ协议的版本,CMD是声名协议的呼吁,Login就是指QQ的登录了,SEQ是他的为了防备一再发送而设定的一个标志,一样平常我们取当前时刻数值的一段放入即可。(C#:DateTime.Now.Ticks.ToString().Substring(7,7) DELPHI:CopyStr(inttostr(GetTickCount()),1,5)),UIN是声名你当前要登录的用户QQ号,PS,是MD5加密事后的暗码的值。 返回协议: VER=1.1&CMD=Login&SEQ=11281&UIN=&RES=0&RS=0&HI=60&LI=300(乐成) RES为0暗示乐成返回,RS为0暗示登录乐成。 VER=1.1&CMD=Login&SEQ=11422&UIN=315103947&RES=0&RS=1&RA=登录失败 RS为1暗示登录失败,那么就会呈现提醒信息RA声名缘故起因。
4、得到QQ名单。 假如您加了您的挚友,那么您的挚友就会放入你的QQ的挚友名单内里,那么我们要获得QQ名单就必须给QQ处事器发送获得挚友名单的协议(我就不从复已知的参数了): VER=1.1&CMD=List&SEQ=&UIN=&TN=160&UN=0 处事器获得协议后假如乐成则返回: VER=1.1&CMD=LIST&SEQ=43661&UIN=29501213&RES=0&FN=1&SN=24&UN=561256,1943497,.... UN后头则是您挚友的QQ号码,每个号码都由,举办分隔。那么我们只必要获得UN后头的代码,把它列表化就OK了。C#可以用string.Split(',')把值放入列表举办处理赏罚,而DELPHI可以行使Split()把数值放入TStrings里举办处理赏罚。 5、得到QQ挚友在线名单 得到QQ挚友在线名单,跟得到挚友名单差不多,独一差异的是用的呼吁差异用的是Query_Stat,协议如下: VER=1.1&CMD=Query_Stat&SEQ=&UIN=&TN=50&UN=0 处事器获得协议后假如乐成则返回: VER=1.1&CMD=QUERY_STAT& SEQ=-1&UIN=29501213&RES=0&FC=141,270,270,&FN=1&SN=3&ST=10,10,10,&UN= FC为QQ头像的的ID,如的头像ID为270,那么其头行使的图片为91.bmp,其算法为ID/3+1。ST为QQ用户的状态,10为上线,20为离线,30为繁忙。UN为在线用户的QQ号,NK为在线用户的QQ昵称。ST,UN,NK,每个逗号离隔的数据彼此对应。 6、获得QQ用户的信息。 假如要看到QQ用户的真实名称,MAIL,年数,小我私人声名等信息,那么我们必需要向处事器发送获得挚友信息的信息: VER=1.1&CMD=GetInfo&SEQ=&UIN=&LV=2&UN= UN为要查察用户信息的QQ号。 处事器获得协议后假如乐成则返回: VER=1.1&CMD=GETINFO&SEQ=12707&UIN=415103947&RES=0&AD=云南昆明&AG=0&EM=Microprogramer@hotmail.com&FC=270&HP=msger.org(建树中...)&JB=措施员&LV=2&PC=650000&PH=0871-6466529&PR=收集为媒%252c相关为本%252c信息为财%252c客户为主.%0d%0a&PV=云南省&RN=刘X&SC=社会大学&SX=0&UN=24259132&NK=微程 AD用户的接洽地点,AG为用户年数,EM为用户MAIL,FC为用户头像,HP为用户网站,JB为用户职业,PC为用户邮编,PH为用户接洽电话,PR为用户简介,PV为用户以是的省,RN为用户真实名称,SC为用户结业院校,SX为用户性别,UN为用户QQ号,NK为用户QQ昵称。 7、增进QQ挚友。 想要新增挚友,就要发送AddToList呼吁给处事器,详细呼吁如下: VER=1.1&CMD=AddToList&SEQ=&UIN=&UN= UN为我们要增进用户的QQ号。 处事器获得协议后假如乐成则返回: VER=1.1&CMD=AddToList&SEQ=13666&UIN=415103947&RES=0&CD=0&UN=24259132 CD为被加QQ的身份验证状态,CD为0暗示“应承任何人把我列为挚友”,CD为1暗示“必要身份证认才气把我列为挚友”,CD为3暗示“不应承任何人把我列为挚友”。假如CD为0那么信息回馈后,用户就直接加为挚友了,假如CD为1,那么还要发送一次回应加为挚友的相应。 8、回应加为挚友的相应。 回应加为挚友相应是两边的:1、假如你发送了哀求加对方为挚友,假如对方必要验证,那么必须发送回应加为挚友的相应。2、假如对方发送加为挚友哀求给你,那么你可以加应加为挚友的相应,一是加为挚友,一是通过验证,一是拒决加为挚友。我们要向处事器发送呼吁: VER=1.1&CMD=Ack_AddToList&SEQ=&UIN=&UN=&CD=&RS= CD为响 应状态,CD为0暗示“通过验证”。CD为1暗示“拒决加为对方为挚友”。CD为2暗示“为哀求对吩蹲悛挚友”。RS为你要哀求的来由. 处事器获得协议后假如乐成则返回: VER=1.1&CMD=Ack_AddToList&SEQ=1130&UIN=415103947&RES=0& 9、删除挚友。 删除挚友着实很轻易,向处事器发送DelFromList呼吁则可以删除用户: VER=1.1&CMD=DelFromList&SEQ=&UIN=&UN= UN为要删除用户的QQ号。 处事器获得协议后假如乐成则返回: VER=1.1&CMD=DelFromList&SEQ=24514&UIN=415103947&RES=0& 10、改变用户当前状态。 可以把QQ配置为在线,隐身等状态,我们可以发送Change_Stat给处事器以改变当前状态,详细呼吁如下: VER=1.1&CMD=Change_Stat&SEQ=&UIN=&ST= ST为要改变的状态,10为上线,20为离线,30为繁忙。 处事器获得协议后假如乐成则返回: VER=1.1&CMD=Change_Stat&SEQ=17512&UIN=415103947&RES=0& 11、退出登录 要退出登录,要向处事器发送呼吁Logout,详细呼吁如下: VER=1.1&CMD=Logout&SEQ=&UIN= 处事器获得协议后假如乐成则返回: VER=1.1&CMD=LOGOUT&SEQ=15803&UIN=415103947&RES=0 12、得到挚友QQ的动静 假如要吸取挚友的动静,要向处事器发送呼吁GetMsgEx,详细呼吁如下: VER=1.1&CMD=GetMsgEx&SEQ=&UIN= 处事器获得协议后假如乐成则返回: VER=1.1&CMD=GETMSGEX&SEQ=56661&UIN=29501213&RES=0&MN=3&MT=99,9,9, &UN=24259132,24259132,24259132,&MG=30 ,asdfasdfasdfasdf ,asdfasdfasdf ,&MT暗示动静范例,99暗示体系动静,9暗示用户动静。UN暗示动静发送来历用户,MG暗示发送的动静,MG动静可以暗示某些特定的体系含意,譬如:当MT为99,MG为30,UN为24259132则暗示用户4259132此刻处于繁忙状态,可按照此动静举办挚友列表的革新,进步服从。 13、向挚友QQ发送动静 要发送动静给挚友,要向处事器发送呼吁CLTMSG呼吁,详细呼吁如下: VER=1.1&CMD=CLTMSG&SEQ=&UIN=&UN=&MG= UN为动静发送给的用户QQ号码,MG为发送给该用户的动静。 处事器获得协议后假如乐成则返回: VER=1.1&CMD=CLTMSG&SEQ=15 803&UIN=415103947&RES=0 好了,以上就是QQ基于HTTP的一个不完全的协议说明,操作以上协议您就可以实现许多对象,如:QQ呆板人,QQ告白体系,即时通信的整合器材等等 QQ协议收集协议--哀求部份
//登录 VER=1.0&CMD=Login&SEQ=&UIN=&PS=&M5=1&LC=9326B87B234E7235 //获打动静 VER=1.0&CMD=GetMsgEx&SEQ=&UIN= //发送动静 VER=1.0&CMD=CLTMSG&SEQ=&UIN=&UN=&MG= //伴侣列表 VER=1.0&CMD=List&SEQ=&UIN=&TN=160&UN=0 //获取挚友状态 VER=1.0&CMD=Query_Stat&SEQ=&UIN=&TN=50&UN=0 //获取挚友信息 VER=1.0&CMD=GetInfo&SEQ=&UIN=&LV=2&UN= //增进挚友 VER=1.0&CMD=AddToList&SEQ=&UIN=&UN= //回应对方哀求加你为挚友的相应 VER=1.0&CMD=Ack_AddToList&SEQ=&UIN=&UN=&CD=&RS= //删除挚友 VER=1.0&CMD=DelFromList&SEQ=&UIN=&UN= //搜刮挚友 VER=1.0&CMD=Finger&SEQ=&UIN=&AG=&SX=&PV= //改变本身状态,ST的代码应该和获取挚友状态代码同等 VER=1.0&CMD=Change_Stat&SEQ=&UIN=&ST= //退出登录 VER=1.0&CMD=Logout&SEQ=&UIN= (编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|