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(toCrySt