日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

QQ接口Api 實(shí)現(xiàn)登陸

 aaie_ 2012-08-22
1、找尋支持 QQ HTTP 協(xié)議的服務(wù)器。 大家也許會(huì)被一些假像所迷惑,也許會(huì)認(rèn)為 QQ 的 HTTP 服務(wù)器是基于 80 口進(jìn)行通信的(如:218.17.209.23: 80) ,其實(shí)不然,正真基于 HTTP 的服務(wù)器應(yīng)該是:http: //tqq.tencent.com:8000, 它是一個(gè)通過(guò) 8000 口進(jìn)行 通訊的服務(wù)器。 由于 QQ 的 HTTP 服務(wù)器并不支持 HTTP 協(xié)議中 GET 方 法, 它支持 POST 方法。 所以我們要給 QQ 的 HTTP 協(xié)議 傳參數(shù),那么就必需要用 POST 方式才行。 2、C#和 DELPHI 是實(shí)現(xiàn) HTTP 的 POST 方法的通信。 C#: C#里 System.Web 空間下提供了一個(gè)叫做 WebClien t 的對(duì)象, 使用此對(duì)象就可以使 C#直接對(duì)服務(wù)器發(fā)送 WE B 客戶端的請(qǐng)求。 那么我們要對(duì)服務(wù)器提交 POST 方法那 么就必須使用其 UploadData()方法才行。首先把要請(qǐng)求 的信息先轉(zhuǎn)換為字節(jié)(因?yàn)?POST 提交的是字符的流數(shù) 據(jù)) ,然后再做為 UploadData()的參數(shù)。使用 UploadD ata()進(jìn)行數(shù)據(jù)提交,最后返回,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#進(jìn)行了一次 HTTP 的 POST 方法 提交了。
值在傳入、返回時(shí),其是基于 UTF-8 進(jìn)行的,C#顯示 中文是很常. 3、實(shí)現(xiàn) QQ 的用戶登錄。 在 QQ 通信中用戶必需要登錄后才可以進(jìn)行互相發(fā)送信 息等。QQ 的登錄是很關(guān)鍵的,大家所看到的用戶在線, 并不是用戶的 QQ 一直連接著服務(wù)器,而是定時(shí)發(fā)送消 信給服務(wù)器,證明自己還連著線,如果超出時(shí)間 QQ 就 認(rèn)為用戶已經(jīng)掉線了。 在登錄協(xié)議中, 的密碼是用標(biāo)準(zhǔn)的 MD5 來(lái)進(jìn)行加密, QQ 而 C#自已帶有,但是直接用不了,必需進(jìn)行處理后,才 能使其變成標(biāo)準(zhǔn)的 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 是小寫(xiě),把所有字符變 小寫(xiě) } 了解 QQ 是如何對(duì)用戶密碼加密后,那么我們就開(kāi)始真 正,解析 QQ 的 HTTP 登錄協(xié)議了,我們把協(xié)議當(dāng)傳 PO ST 的參數(shù)傳給服務(wù)器,而服務(wù)器則回饋相應(yīng)的信息給客 戶端: 傳入?yún)f(xié)議:
VER=1.1&CMD=Login&SEQ=&UIN=&PS=&M5 =1&LC=9326B87B234E7235 VER 是用來(lái)說(shuō)明 QQ 協(xié)議的版本,CMD 是說(shuō)明協(xié)議的 命令,Login 就是指 QQ 的登錄了,SEQ 是他的為了防 止重復(fù)發(fā)送而設(shè)定的一個(gè)標(biāo)記,一般我們?nèi)‘?dāng)前時(shí)間數(shù) 值的一段放入即可。(C#:DateTime.Now.Ticks.To String().Substring(7,7) DELPHI:CopyStr(inttost r(GetTickCount()),1,5)),UIN 是說(shuō)明你當(dāng)前要登錄 的用戶 QQ 號(hào),PS,是 MD5 加密過(guò)后的密碼的值。 返回協(xié)議: 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 表示登錄失敗, 那么就會(huì)出現(xiàn)提示信息 RA 說(shuō)明 原因。
4、獲得 QQ 名單。 如果您加了您的好友,那么您的好友就會(huì)放入你的 QQ 的好友名單里面,那么我們要得到 QQ 名單就必需給 Q Q 服務(wù)器發(fā)送得到好友名單的協(xié)議(我就不從復(fù)已知的 參數(shù)了): VER=1.1&CMD=List&SEQ=&UIN=&TN=160&U N=0 服務(wù)器得到協(xié)議后如果成功則返回: VER=1.1&CMD=LIST&SEQ=43661&UIN=2950 1213&RES=0&FN=1&SN=24&UN=561256,1943 497,....
UN 后面則是您好友的 QQ 號(hào)碼,每個(gè)號(hào)碼都由,進(jìn)行分 開(kāi)。那么我們只需要得到 UN 后面的代碼,把它列表化 就 OK 了。C#可以用 string.Split(',')把值放入列表進(jìn) 行處理,而 DELPHI 可以使用 Split()把數(shù)值放入 TStri ngs 里進(jìn)行處理。 5、獲得 QQ 好友在線名單 獲得 QQ 好友在線名單,跟獲得好友名單差不多,唯一 不同的是用的命令不同用的是 Query_Stat,協(xié)議如下: VER=1.1&CMD=Query_Stat&SEQ=&UIN=&TN =50&UN=0 服務(wù)器得到協(xié)議后如果成功則返回: 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 用戶的狀態(tài),10 為上線,20 為離線,30 為忙碌。UN 為在線用戶的 QQ 號(hào),NK 為在線用戶的 QQ 昵稱。ST, UN,NK,每個(gè)逗號(hào)隔開(kāi)的數(shù)據(jù)相互對(duì)應(yīng)。 6、得到 QQ 用戶的信息。 如果要看到 QQ 用戶的真實(shí)名稱,MAIL,年齡,個(gè)人說(shuō) 明等信息,那么我們必需要向服務(wù)器發(fā)送得到好友信息 的信息: VER=1.1&CMD=GetInfo&SEQ=&UIN=&LV=2& UN= UN 為要查看用戶信息的 QQ 號(hào)。 服務(wù)器得到協(xié)議后如果成功則返回:
VER=1.1&CMD=GETINFO&SEQ=12707&UIN=4 15103947&RES=0&AD=云南昆明&AG=0&EM=Mi croprogramer@hotmail.com&FC=270&HP=msg er.org(建設(shè)中...)&JB=程序員&LV=2&PC=650000 &PH=0871-6466529&PR=網(wǎng)絡(luò)為媒%252c 關(guān)系為 本%252c 信息為財(cái)%252c 客戶為主.%0d%0a&PV= 云南省&RN=劉 X&SC=社會(huì)大學(xué)&SX=0&UN=2425 9132&NK=微程 AD 用戶的聯(lián)系地址,AG 為用戶年齡,EM 為用戶 MAI L,F(xiàn)C 為用戶頭像,HP 為用戶網(wǎng)站,JB 為用戶職業(yè),P C 為用戶郵編,PH 為用戶聯(lián)系電話,PR 為用戶簡(jiǎn)介,P V 為用戶所以的省,RN 為用戶真實(shí)名稱,SC 為用戶畢 業(yè)院校,SX 為用戶性別,UN 為用戶 QQ 號(hào),NK 為用 戶 QQ 昵稱。 7、增加 QQ 好友。 想要新增好友,就要發(fā)送 AddToList 命令給服務(wù)器,具 體命令如下: VER=1.1&CMD=AddToList&SEQ=&UIN=&UN= UN 為我們要增加用戶的 QQ 號(hào)。 服務(wù)器得到協(xié)議后如果成功則返回: VER=1.1&CMD=AddToList&SEQ=13666&UIN=4 15103947&RES=0&CD=0&UN=24259132 CD 為被加 QQ 的身份驗(yàn)證狀態(tài),CD 為 0 表示“允許任 何人把我列為好友”,CD 為 1 表示“需要身份證認(rèn)才能 把我列為好友”,CD 為 3 表示“不允許任何人把我列為 好友”。如果 CD 為 0 那么信息回饋后,用戶就直接加 為好友了, 如果 CD 為 1, 那么還要發(fā)送一次回應(yīng)加為好 友的響應(yīng)。 8、回應(yīng)加為好友的響應(yīng)。
回應(yīng)加為好友響應(yīng)是雙方的:1、如果你發(fā)送了請(qǐng)求加對(duì) 方為好友,如果對(duì)方需要驗(yàn)證,那么必需發(fā)送回應(yīng)加為 好友的響應(yīng)。2、如果對(duì)方發(fā)送加為好友請(qǐng)求給你,那么 你可以加應(yīng)加為好友的響應(yīng),一是加為好友,一是通過(guò) 驗(yàn)證,一是拒決加為好友。我們要向服務(wù)器發(fā)送命令: VER=1.1&CMD=Ack_AddToList&SEQ=&UIN=&U N=&CD=&RS= CD 為響 應(yīng)狀態(tài),CD 為 0 表示“通過(guò)驗(yàn)證” 。CD 為 1 表示“拒決 加為對(duì)方為好友” CD 為 2 表示 。 “為請(qǐng)求對(duì)方加為好友” 。 RS 為你要請(qǐng)求的理由. 服務(wù)器得到協(xié)議后如果成功則返回: VER=1.1&CMD=Ack_AddToList&SEQ=1130&UI N=415103947&RES=0& 9、刪除好友。 刪除好友其實(shí)很容易,向服務(wù)器發(fā)送 DelFromList 命令 則可以刪除用戶: VER=1.1&CMD=DelFromList&SEQ=&UIN=&UN = UN 為要?jiǎng)h除用戶的 QQ 號(hào)。 服務(wù)器得到協(xié)議后如果成功則返回: VER=1.1&CMD=DelFromList&SEQ=24514&UIN =415103947&RES=0& 10、改變用戶當(dāng)前狀態(tài)。 可以把 QQ 設(shè)置為在線,隱身等狀態(tài),我們可以發(fā)送 Ch ange_Stat 給服務(wù)器以改變當(dāng)前狀態(tài),具體命令如下: VER=1.1&CMD=Change_Stat&SEQ=&UIN=&ST =
ST 為要改變的狀態(tài),10 為上線,20 為離線,30 為忙 碌。 服務(wù)器得到協(xié)議后如果成功則返回: VER=1.1&CMD=Change_Stat&SEQ=17512&UIN =415103947&RES=0& 11、退出登錄 要退出登錄,要向服務(wù)器發(fā)送命令 Logout,具體命令如 下: VER=1.1&CMD=Logout&SEQ=&UIN= 服務(wù)器得到協(xié)議后如果成功則返回: VER=1.1&CMD=LOGOUT&SEQ=15803&UIN=41 5103947&RES=0 12、獲得好友 QQ 的消息 如果要接收好友的消息, 要向服務(wù)器發(fā)送命令 GetMsgE x,具體命令如下: VER=1.1&CMD=GetMsgEx&SEQ=&UIN= 服務(wù)器得到協(xié)議后如果成功則返回: VER=1.1&CMD=GETMSGEX&SEQ=56661&UIN= 29501213&RES=0&MN=3&MT=99,9,9,&UN=24 259132,24259132,24259132,&MG=30 ,asdfasd fasdfasdf ,asdfasdfasdf ,& MT 表示消息類型,99 表示系統(tǒng)消息,9 表示用戶消息。 UN 表示消息發(fā)送來(lái)源用戶,MG 表示發(fā)送的消息,MG 消息可以表示某些特定的系統(tǒng)含意, 譬如: MT 為 99, 當(dāng) MG 為 30, 為 24259132 則表示用戶 4259132 現(xiàn) UN 在處于忙碌狀態(tài),可根據(jù)此消息進(jìn)行好友列表的刷新, 提高效率。 13、向好友 QQ 發(fā)送消息
要發(fā)送消息給好友,要向服務(wù)器發(fā)送命令 CLTMSG 命 令,具體命令如下: VER=1.1&CMD=CLTMSG&SEQ=&UIN=&UN=&M G= UN 為消息發(fā)送給的用戶 QQ 號(hào)碼, MG 為發(fā)送給該用戶 的消息。 服務(wù)器得到協(xié)議后如果成功則返回: VER=1.1&CMD=CLTMSG&SEQ=15 803&UIN=415103947&RES=0 好了,以上就是 QQ 基于 HTTP 的一個(gè)不完全的協(xié)議分 析,利用以上協(xié)議您就可以實(shí)現(xiàn)很多東西,如:QQ 機(jī)器 人,QQ 廣告系統(tǒng),即時(shí)通訊的整合工具等等 QQ 協(xié)議網(wǎng)絡(luò)協(xié)議--請(qǐng)求部份
//登錄 VER=1.0&CMD=Login&SEQ=&UIN=&PS=&M5= 1&LC=9326B87B234E7235 //獲取消息 VER=1.0&CMD=GetMsgEx&SEQ=&UIN= //發(fā)送消息 VER=1.0&CMD=CLTMSG&SEQ=&UIN=&UN=&M G= //朋友列表 VER=1.0&CMD=List&SEQ=&UIN=&TN=160&UN =0 //獲取好友狀態(tài) VER=1.0&CMD=Query_Stat&SEQ=&UIN=&TN= 50&UN=0
//獲取好友信息 VER=1.0&CMD=GetInfo&SEQ=&UIN=&LV=2&U N= //增加好友 VER=1.0&CMD=AddToList&SEQ=&UIN=&UN= //回應(yīng)對(duì)方請(qǐng)求加你為好友的響應(yīng) VER=1.0&CMD=Ack_AddToList&SEQ=&UIN=&U N=&CD=&RS= //刪除好友 VER=1.0&CMD=DelFromList&SEQ=&UIN=&UN = //搜索好友 VER=1.0&CMD=Finger&SEQ=&UIN=&AG=&SX =&PV= //改變自己狀態(tài),ST 的代碼應(yīng)該和獲取好友狀態(tài)代碼一 致 VER=1.0&CMD=Change_Stat&SEQ=&UIN=&ST = //退出登錄 VER=1.0&CMD=Logout&SEQ=&UIN=


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多