当前位置:首页 > Windows程序 > 正文

QQ API 接口

2021-05-24 Windows程序

1、找寻支持 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 空间下提供了一个叫做 WebClien t 的对象, 使用此对象就可以使  C#直接对服务器发送 WE B 客户端的请求。 那么我们要对服务器提交 POST 方法那 么就必须使用其 UploadData()方法才行。首先把要请求  的信息先转换为字节(因为 POST 提交的是字符的流数 据) ,然后再做为 UploadData()的参数。使用 UploadD  ata()进行数据提交,最后返回,POST 的回馈信息。如 下: WebClient _client = new WebClient(); string  postValues = "VER=1.0&CMD=Query_S  tat&SEQ=12321&UIN=29501213&TN=50&UN= 0"; Byte[] byteArray =  System.Text.Encoding.ASC II.GetBytes(postValues); Byte[] pageData =  _client.UploadData(Host,"P OST",byteArray); 这样,我们就利用 C#进行了一次 HTTP 的 POST 方法  提交了。
值在传入、返回时,其是基于 UTF-8 进行的,C#显示 中文是很常.

3、实现 QQ 的用户登录。 在 QQ  通信中用户必需要登录后才可以进行互相发送信 息等。QQ 的登录是很关键的,大家所看到的用户在线, 并不是用户的 QQ 一直连接着服务器,而是定时发送消  信给服务器,证明自己还连着线,如果超出时间 QQ 就 认为用户已经掉线了。 在登录协议中, 的密码是用标准的 MD5 来进行加密, QQ 而  C#自已带有,但是直接用不了,必需进行处理后,才 能使其变成标准的 MD5,处理代码如下:
public static string MD5(string  toCryS tring) { MD5CryptoServiceProvider hashmd5; hashmd5 = new M  D5CryptoServiceProvider(); return BitConverter.ToString(hashmd5.ComputeH  ash(Encoding.Default.GetBytes(toCryString))).Re place("-","").ToLower();//asp  是小写,把所有字符变 小写 } 了解 QQ 是如何对用户密码加密后,那么我们就开始真 正,解析 QQ 的 HTTP 登录协议了,我们把协议当传 PO ST  的参数传给服务器,而服务器则回馈相应的信息给客 户端:  传入协议:
VER=1.1&CMD=Login&SEQ=&UIN=&PS=&M5  =1&LC=9326B87B234E7235 VER 是用来说明 QQ 协议的版本,CMD 是说明协议的 命令,Login 就是指 QQ  的登录了,SEQ 是他的为了防 止重复发送而设定的一个标记,一般我们取当前时间数 值的一段放入即可。(C#:DateTime.Now.Ticks.To  String().Substring(7,7) DELPHI:CopyStr(inttost r(GetTickCount()),1,5)),UIN  是说明你当前要登录 的用户 QQ 号,PS,是 MD5 加密过后的密码的值。 返回协议:  VER=1.1&CMD=Login&SEQ=11281&UIN=&RE  S=0&RS=0&HI=60&LI=300(成功) RES 为 0 表示成功返回,RS 为 0 表示登录成功。  VER=1.1&CMD=Login&SEQ=11422&UIN=315  103947&RES=0&RS=1&RA=登录失败 RS 为 1 表示登录失败, 那么就会出现提示信息 RA 说明  原因。
4、获得 QQ 名单。 如果您加了您的好友,那么您的好友就会放入你的 QQ 的好友名单里面,那么我们要得到 QQ 名单就必需给 Q Q  服务器发送得到好友名单的协议(我就不从复已知的 参数了):  VER=1.1&CMD=List&SEQ=&UIN=&TN=160&U N=0 服务器得到协议后如果成功则返回:  VER=1.1&CMD=LIST&SEQ=43661&UIN=2950  1213&RES=0&FN=1&SN=24&UN=561256,1943 497,....
UN 后面则是您好友的 QQ  号码,每个号码都由,进行分 开。那么我们只需要得到 UN 后面的代码,把它列表化 就 OK 了。C#可以用 string.Split(‘,‘)把值放入列表进  行处理,而 DELPHI 可以使用 Split()把数值放入 TStri ngs 里进行处理。

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,2  70,&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,每个逗号隔开的数据相互对应。

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/70186.html