版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 畢業(yè)設計(論文)</b></p><p> 題 目: 騰訊微博客戶端的設計與實現(xiàn) </p><p> 專 業(yè): 計算機科學與技術(軟件工程)</p><p> 院(系): 信息工程學院 </p><p>
2、 完成時間: </p><p> 畢業(yè)設計(論文)任務書</p><p> 附表一 題目來源:探索學習</p><p> 畢業(yè)設計(論文)開題報告</p><p><b> 附表二 <
3、;/b></p><p> 畢業(yè)設計工作中期檢查Ⅰ</p><p> 附表三 2012 年4 月2日</p><p> 畢業(yè)設計工作中期檢查Ⅱ</p><p> 附表四
4、 2012 年5 月3日</p><p> 騰訊微博客戶端的設計與實現(xiàn)</p><p> 摘要:微博,即微博客(MicroBlog)的簡稱,是一個基于用戶關系的信息分享、傳播以及獲取平臺,用戶可以通過WEB、WAP以及各種客戶端組建個人社區(qū),以140字左右的文字更新信息,并實現(xiàn)即時分享。微博集成了手機短信、博客與社交網(wǎng)站的優(yōu)點,將消費者從原來單純
5、的信息接收者變成了接收和發(fā)布信息的完全參與者,從而讓社會走進了全民記者時代。</p><p> 此客戶端是在VS2010平臺下利用微軟的MFC(微軟基礎類庫)進行開發(fā)的,通過調(diào)用騰訊微博開放平臺提供的API接口,獲得騰訊微博用戶的相關信息。通過此客戶端,用戶可以獲得自己的信息,發(fā)表新微博,查看自己收聽用戶的微博,并進行評論與收藏。在界面方面,使用的是MFC提供的控件。通過對控件的功能的完善,可以使用戶更加方便的
6、使用客戶單完成微博的一些基本操作。</p><p> 關鍵詞:微博,騰訊,MFC,API接口</p><p> Design and Implementation of Tencent Microblog Client</p><p> Abstact: Micro blog (MicroBlog), referred to as microblogging,
7、 is a relationship based on user information sharing, dissemination and access to the platform, users can set up individual communities, through the WEB as well as a variety of clients to update the information in about
8、140 words of text, and to achieveinstant sharing. The microblogging integrates the advantages of mobile phone text messages, blog and social networking sites, consumers from the original simple information receiver to &l
9、t;/p><p> This client is developed by using Microsoft's MFC (Microsoft Foundation Class Library) in VS2010 platform. By calling Tencent microblogging opening platform API interface get Tencent microbloggin
10、g user's information. Through this client, users can access their own information, the new microblogging, check the microblogging of user's that they are listening and reviews and collection. At the interface, us
11、ing MFC controls. Perfect control function allows users to more easily use the customer a sin</p><p><b> 目錄</b></p><p><b> 一、緒論1</b></p><p><b> 1.1
12、引言1</b></p><p> 1.2微博的定義與特點1</p><p> 1.2.1微博的定義1</p><p> 1.2.2微博的特點2</p><p> 1.3國內(nèi)外研究發(fā)展綜述2</p><p> 1.3.1國外發(fā)展綜述2</p><p> 1.3.
13、2國內(nèi)發(fā)展綜述3</p><p> 二、系統(tǒng)開發(fā)環(huán)境簡介5</p><p> 2.1系統(tǒng)開發(fā)軟件環(huán)境5</p><p> 2.1.1 Visualstudio.NET2010簡介5</p><p> 2.1.2 騰訊微博開放平臺5</p><p> 2.2系統(tǒng)開發(fā)硬件環(huán)境6</p>
14、<p> 三、軟件需求分析與總體設計7</p><p> 3.1系統(tǒng)需求分析7</p><p> 3.1.1 功能需求7</p><p> 3.1.2 穩(wěn)定性需求7</p><p> 3.1.3 其它需求7</p><p> 3.2 微博客戶端設計概要8</p><
15、p> 3.3 微博客戶端認證機制8</p><p> 3.3.1 騰訊微博 API OAuth認證介紹8</p><p> 3.3.2 OAuth認證機制介紹8</p><p> 3.3.3 OAUTH認證機制的運行過程9</p><p> 3.4 微博客戶端信息抓取流程10</p><p>
16、 3.4.1 CWeiboParam參數(shù)類及微博相關參數(shù)簡介11</p><p> 3.4.2 信息傳遞函數(shù)SyncRequest()簡介11</p><p> 3.5 對返回值的解析12</p><p> 3.5.1 Json格式簡介12</p><p> 3.5.2 騰訊微博API對Json格式的解析14</p&
17、gt;<p> 3.5.3 XML格式簡介15</p><p> 3.5.4 騰訊微博API對XML格式的解析16</p><p> 3.6 字符串格式的轉(zhuǎn)換16</p><p> 3.6.1 Unicode字符集與多字節(jié)字符集的區(qū)別16</p><p> 3.6.2 char*、string和CString的
18、轉(zhuǎn)換17</p><p> 四、軟件詳細設計與實現(xiàn)18</p><p> 4.1 相關變量的定義18</p><p> 4.2 相關圖片的獲取和顯示19</p><p> 4.3 用戶登錄的設計與實現(xiàn)20</p><p> 4.4 用戶信息模塊的設計與實現(xiàn)21</p><p&g
19、t; 4.5 微博相關操作模塊的設計與實現(xiàn)23</p><p> 4.6 微博發(fā)布和評論模塊的設計與實現(xiàn)25</p><p><b> 五、開發(fā)總結26</b></p><p><b> 致謝27</b></p><p><b> 參考文獻28</b><
20、;/p><p><b> 一、緒論</b></p><p><b> 1.1引言</b></p><p> 微博,即微博客(MicroBlog)的簡稱,是一個基于用戶關系的信息分享、傳播以及獲取平臺,用戶可以通過WEB、WAP以及各種客戶端組建個人社區(qū),以140字左右的文字更新信息,并實現(xiàn)即時分享。近3年來,互聯(lián)網(wǎng)上4種
21、主要的社交媒體(SocialMedia)———微博、社交網(wǎng)站、視頻分享網(wǎng)站和開放式百科全書從根本上改變了人類的生活。人類正以前所未有的速度和廣度傳遞信息,以計算機為媒介的溝通成為人們互動溝通的重要方式。在這4種媒體中,微博后來居上。國外最早提供微博服務的網(wǎng)站是美國的Twitter,從2006年10月開通至2011年1月在全球已擁有近2億注冊用戶,年增長率約1500%,每日訪問量約30億國內(nèi)的新浪微博和騰訊微博均在開通不到一年半的時間內(nèi)突
22、破1億用戶。微博集成了手機短信、博客與社交網(wǎng)站的優(yōu)點,將消費者從原來單純的信息接收者變成了接收和發(fā)布信息的完全參與者,從而讓社會走進了全民記者時代。2010年我國最大的50起網(wǎng)絡輿情案例中約1/4是微博發(fā)起的,微博已成為企業(yè)和網(wǎng)民互動溝通的新平臺。</p><p> 1.2微博的定義與特點</p><p> 1.2.1微博的定義</p><p> 國內(nèi)知名新媒
23、體領域研究學者陳永東在國內(nèi)率先給出了微博的定義:微博是一種通過關注機制分享簡短實時信息的廣播式的社交網(wǎng)絡平臺。其中有五方面的理解:</p><p> (1) 關注機制:可單向可雙向</p><p> (2) 簡短容:通常為140字</p><p> (3) 實時信息:最新實時信息</p><p> (4) 廣播式:公開的信息,誰都可以
24、瀏覽</p><p> (5) 社交網(wǎng)絡平臺:把微博歸為社交網(wǎng)絡</p><p> 1.2.2微博的特點</p><p> 微博客草根性更強,且廣泛分布在桌面、瀏覽器、移動終端等多個平臺上,有多種商業(yè)模式并存,或形成多個垂直細分領域的可能,但無論哪種商業(yè)模式,都離不開用戶體驗的特性和基本功能。</p><p> (1) 信息獲取具有很
25、強的自主性、選擇性,用戶可以根據(jù)自己的興趣偏好,依據(jù)對方發(fā)布內(nèi)容的類別與質(zhì)量,來選擇是否“關注”某用戶,并可以對所有“關注”的用戶群進行分類;</p><p> (2) 微博宣傳的影響力具有很大彈性,與內(nèi)容質(zhì)量高度相關。其影響力基于用戶現(xiàn)有的被“關注”的數(shù)量。用戶發(fā)布信息的吸引力、新聞性越強,對該用戶感興趣、關注該用戶的人數(shù)也越多,影響力越大。此外,微博平臺本身的認證及推薦亦助于增加被“關注”的數(shù)量;</
26、p><p> (3) 內(nèi)容短小精悍。微博的內(nèi)容限定為140字左右,內(nèi)容簡短,不需長篇大論,門檻較低;</p><p> (4) 信息共享便捷迅速??梢酝ㄟ^各種連接網(wǎng)絡的平臺,在任何時間、任何地點即時發(fā)布信息,其信息發(fā)布速度超過傳統(tǒng)紙媒及網(wǎng)絡媒體。</p><p> 1.3國內(nèi)外研究發(fā)展綜述</p><p> 1.3.1國外發(fā)展綜述<
27、;/p><p> 2006年3月,博客技術先驅(qū)blogger創(chuàng)始人埃文·威廉姆斯(EvanWilliams)創(chuàng)建的新興公司Obvious推出了大微博服務。在最初階段,這項服務只是用于向好友的手機發(fā)送文本信息。Twitter是2006年3月由blogger的創(chuàng)始人威廉姆斯(EvanWilliams)推出的,英文原意為小鳥的嘰嘰喳喳聲,用戶能用如發(fā)手機短信的數(shù)百種工具更新信息。Twitter的出現(xiàn)把世人的眼光
28、引入了一個叫微博的小小世界里。Twitter是一個社交網(wǎng)絡及微博客服務。用戶可以經(jīng)由SMS、即時通信、電郵、Twitter網(wǎng)站或Twitter客戶端軟件(如Twitterrific)輸入最多140字的文字更新,Twitter被Alexa網(wǎng)頁流量統(tǒng)計評定為最受歡迎的50個網(wǎng)絡應用之一。在2007年5月,國際間計算總共有111個類似Twitter的網(wǎng)站。然而,最值得注意的仍是Twitter,它于2007年在得克薩斯州奧斯汀舉辦的南非西南會議
29、贏得了部落格類的網(wǎng)站獎。Twitter的主要競爭對手是Plurk和Jaiku。后來微博客的新服務特色持續(xù)誕生,例如Plurk有時間軸可以觀看整合了視訊和照片的分享,Ide</p><p> 1.3.2國內(nèi)發(fā)展綜述</p><p> 從2007年中國第一家?guī)в形⒉┥实娘埛窬W(wǎng)開張,到2009年,微博這個全新的名詞,以摧枯拉朽的姿態(tài)掃蕩世界,打敗奧巴馬、甲流等等名詞,成為全世界最流行的詞匯
30、。伴隨而來的,是一場微博世界人氣的爭奪戰(zhàn),大批量的名人</p><p><b> 圖1-1 新浪微博</b></p><p> 被各大網(wǎng)站招攬,各路名人也以微博為平臺,在網(wǎng)絡世界里聚集人氣,同樣,新的傳播工具也造就了無數(shù)的草根英雄,從默默無聞到新的話語傳播者,往往只在一夜之間、寥寥數(shù)語。2009年7月中旬開始,國內(nèi)大批老牌微博產(chǎn)品(飯否、騰訊滔滔等)停止運營,一些
31、新產(chǎn)品開始進入人們的視野,像開放的嘰歪,6月份開放的Follow5,7月份開放的9911,8月份開放的新浪微博,其中Follow5在2009年7月19日孫楠大連演唱會上的亮相,是國內(nèi)第一次將微博引入大型演藝活動,與twitter當年的發(fā)展頗有幾分神似。2010年國內(nèi)微博迎來來春天,微博像雨后春筍般崛起。四大門戶網(wǎng)站均開設微博。根據(jù)相關公開數(shù)據(jù),截至2010年1月份,該產(chǎn)品在全球已經(jīng)擁有7500萬注冊用戶。中國互聯(lián)網(wǎng)絡信息中心(CNNIC
32、)今日發(fā)布《第28次中國互聯(lián)網(wǎng)絡發(fā)展狀況統(tǒng)計報告》,報告顯示,2011年上半年,中國微博用戶從6331萬增至1.95億,增長約2倍。該《報告》指出,中國互聯(lián)網(wǎng)的普及率增至36.2%,較2010年增加1.9%。2011年上半年,我國微博用戶數(shù)量從6331萬增至1.95億,半年增幅高達208.9%。微博在網(wǎng)民中的普及率從13</p><p><b> 圖1-2騰訊微博</b></p>
33、;<p> 至今,新浪微博用戶數(shù)超過1億,得益于搶占了先機,而且在整體的戰(zhàn)略執(zhí)行上也比較徹底到位,所以獲得了現(xiàn)在的地位。僅僅兩年時間,新浪微博就為新浪生下了一個價值幾十億美金的‘金蛋’。而另一個微博巨頭:騰訊微博,也呈現(xiàn)出發(fā)展迅猛的姿態(tài),騰訊擁有近5億的QQ注冊用戶,2億左右的活躍用戶。這部分人群很容易受潮流趨勢的影響,開通騰訊微博。通過騰訊微博能夠與QQ好友和騰訊微博上的其他用戶行行信息的分享。</p>
34、<p> 另外其作為重要的推廣渠道。企業(yè)用戶通過注冊騰訊官方微博,得到認證后,能夠迅速的擴大企業(yè)的知名度。個人用戶通過騰訊微博,也能再微博平臺進行個人的推廣。目前,很多的社會事件揭露都來自于微博平臺。高校教育平臺也隨之建立,如騰訊微博校園上的高校新聞哥微博體系的發(fā)展,推動了中國教育事業(yè)信息化發(fā)展的步伐。</p><p> 二、系統(tǒng)開發(fā)環(huán)境簡介</p><p> 2.1系統(tǒng)開
35、發(fā)軟件環(huán)境</p><p> 2.1.1 Visualstudio.NET2010簡介</p><p> Visual Studio是微軟公司出品的一款大型應用軟件,從最初的VisualStudio97開始就成為編程的重要工具。VisualStudio.NET是一套完整的開發(fā)工具,用于生成ASP Web應用程序、XML Web services、桌面應用程序和移動應用程序。Visual
36、Basic.NET、Visual C++.NET、VisualC#.NET和VisualJ#.NET全都使用相同的集成開發(fā)環(huán)境(IDE),該環(huán)境允許它們共享工具并有助于創(chuàng)建混合語言解決方案。另外,這些語言利用了.NET Framework的功能,此框架提供對簡化ASP Web應用程序和XML Web services開發(fā)的關鍵技術的訪問。Visual Studio 2010版本于2010年4月12日上市,其集成開發(fā)環(huán)境(IDE)的界面被
37、重新設計和組織,變得更加簡單明了。Visual Studio 201O同時帶來了NETFramework4.0,MicrosoftVisualStudio2010CTP(CommunityTechnologyPreview--CTP)并且支持開發(fā)面向Windows7的應用程序。</p><p> (1) 支持 Windows Azure,微軟云計算架構邁入重要里程碑。</p><p>
38、 (2) 助力移動與嵌入式裝置開發(fā),三屏一云商機無限。</p><p> (3) 實踐當前最熱門的 Agile/Scrum 開發(fā)方法,強化團隊競爭力。</p><p> (4) 升級的軟件測試功能及工具,為軟件質(zhì)量嚴格把關。</p><p> (5) 搭配 Windows 7,Silverlight 4 與 Office,發(fā)揮多核并行運算威力,</p&g
39、t;<p> 創(chuàng)建美感與效能并重的新一代軟件。</p><p> (6) 支持最新C++標準,增強IDE,切實提高程序員開發(fā)效率。</p><p> 2.1.2 騰訊微博開放平臺</p><p> 騰訊微博開放平臺,是基于騰訊微博系統(tǒng),為廣大開發(fā)者和用戶提供的開放數(shù)據(jù)分享與傳播平臺。廣大開發(fā)者和用戶登錄平臺后,就可以使用平臺提供的開 放API接
40、口,創(chuàng)建應用從微博系統(tǒng)獲取信息,或?qū)⑿碌男畔鞑サ秸麄€微博系統(tǒng)中,豐富多樣的API接口和應用,加上你的智慧,將創(chuàng)造出無窮的應用和樂趣! </p><p> (1) 平臺介紹 — 在微博開放平臺能獲取到的資源及優(yōu)勢 </p><p> (2) 應用開發(fā)說明 — 說明如何成為一個開發(fā)者并創(chuàng)建應用 </p><p> (3) 應用審核流程 — 審核應用的來源字段能獲
41、得的好處,以及如何審核 </p><p> (4) 開發(fā)者協(xié)議 — 在此查看騰訊微博開放平臺開發(fā)者服務協(xié)議</p><p> 2.2系統(tǒng)開發(fā)硬件環(huán)境</p><p><b> 硬件配置如下:</b></p><p> 操作系統(tǒng): Windows 7操作系統(tǒng)</p><p> CPU:
42、 Intel(R)Core(TM)Duo CPU T6600 2.20GHz</p><p> 內(nèi)存: 5GB</p><p> 顯卡: NVIDIA Geforce GT 130M</p><p> 三、軟件需求分析與總體設計</p><p><b> 3.1系統(tǒng)需求分析</b&g
43、t;</p><p> 3.1.1 功能需求</p><p> 微博作為現(xiàn)在人們生活中必不可少的工具,通過微博這個媒介,發(fā)布身邊的新鮮事,并且能對某一熱門話題進行評論,必要的時候還可收藏自己喜歡的文字??梢哉f文博極大地豐富了我們的生活。所以說,一個微博客戶端系統(tǒng),一定要包含如下的基本功能,來發(fā)揮微博的作用:</p><p> (1) 用戶登錄自己的賬戶并查看自
44、己的個人信息。</p><p> 通過OAUTH認證方式,用戶可以在不告知客戶端自己的賬號和密碼的情況下,安全的通過客戶端登陸騰訊微博,并且獲取自己的相關信息。</p><p> (2) 用戶查看自己的新微博,獲取好友的最新動態(tài)。</p><p> 用戶可以查看自己關注對象的微博,并能夠通過隨時刷新獲得最新的微博動態(tài)。并且,用戶不僅能看到微博的文字內(nèi)容,還能看
45、到微博的相關配圖。</p><p> (3) 用戶發(fā)表新微博,告訴好友自己身邊的新鮮事。</p><p> 用戶可以發(fā)表新的微博,隨時更新自己的狀態(tài)。</p><p> (4) 用戶對好友的微博進行評論,并且對自己喜愛的微博進行收藏。</p><p> 用戶可以對看到的微博進行評論,發(fā)表自己的意見,當用戶看到感興趣的微博時,還收藏此微
46、博。</p><p> 3.1.2 穩(wěn)定性需求</p><p> (1) 客戶端能夠長時間的正確運行,如果客戶端出錯,客戶端會有相應的出錯信息,能夠使用戶明白在哪里出錯了,該怎么辦。</p><p> (2) 減少無用的代碼,減少因此帶來的錯誤,并使客戶端能夠盡可能快的對數(shù)據(jù)進行處理</p><p> 3.1.3 其它需求</p
47、><p> (1) 為保證客戶端的正常運行,應保證計算機能夠一直連接互聯(lián)網(wǎng)以獲取信息。</p><p> (2) 使用圖形化界面,可使用鼠標或鍵盤作為標準輸入設備。</p><p> 3.2 微博客戶端設計概要</p><p> 微博客戶端運行主要分為兩個階段,第一階段:認證階段,第二階段:信息獲取階段。用戶首先通過客戶端打開的騰訊微博授
48、權界面獲得授權碼,然后將獲得授權碼交付給客戶端從而完成認證階段??蛻舳送ㄟ^獲得認證碼作為用戶授權的依據(jù),從而通過騰訊微博提供的API獲得用戶相關的微博信息。</p><p> 認證 輸入賬戶相關信息</p><p><b> 階段</b></p><p><b> 返回授權碼&l
49、t;/b></p><p> 信息 通過授權信息</p><p> 獲取 </p><p> 階段 返回用戶微博的相關信息</p><p> 圖3-1客戶端運行流程 </p><p> 3.
50、3 微博客戶端認證機制</p><p> 3.3.1 騰訊微博 API OAuth認證介紹</p><p> 騰訊微博開放平臺,是基于騰訊微博系統(tǒng),為廣大開發(fā)者和用戶提供的開放數(shù)據(jù)分享與傳播平臺。 廣大開發(fā)者和用戶登錄平臺后,就可以使用平臺提供的開放API接口,創(chuàng)建應用從微博系統(tǒng)獲取信息,或?qū)⑿碌男畔鞑サ秸麄€微博系統(tǒng)中,豐富多樣的API接口和應用,加上您的智慧,將創(chuàng)造出無窮的應用和樂
51、趣。 騰訊微博API采用OAuth協(xié)議為第三方提供接入服務,遵循[RFC-5849]規(guī)范。有關OAuth認證的詳細說明,請閱讀官方OAuth規(guī)范。各種語言的OAuth 客戶端可以在Google-OAuth項目里找到。 騰訊微博API使用OAuth 1.0a版本。</p><p> 3.3.2 OAuth認證機制介紹</p><p> OAUTH協(xié)議為用戶資源的授權提供了一個安全的、開放
52、而又簡易的標準。與以往的授權方式不同之處是OAUTH的授權不會使第三方觸及到用戶的帳號信息(如用戶名與密碼),即第三方無需使用用戶的用戶名與密碼就可以申請獲得該用戶資源的授權,因此OAUTH是安全的。同時,任何第三方都可以使用OAUTH認證服務,任何服務提供商都可以實現(xiàn)自身的OAUTH認證服務,因而OAUTH是開放的。業(yè)界提供了OAUTH的多種實現(xiàn)如PHP、JavaScript,Java,Ruby等各種語言開發(fā)包,大大節(jié)約了程序員的時間
53、,因而OAUTH是簡易的。目前互聯(lián)網(wǎng)很多服務如Open API,很多大公司如Google,Yahoo,Microsoft等都提供了OAUTH認證服務,這些都足以說明OAUTH標準逐漸成為開放資源授權的標準。OAUTH認證具有以下特點:</p><p> (1) 簡單:不管是OAUTH服務提供者還是應用開發(fā)者,都很容易于理解與使用。</p><p> (2) 安全:沒有涉及到用戶密鑰等信
54、息,更安全更靈活。 (3) 開放:任何服務提供商都可以實現(xiàn)OAUTH,任何軟件開發(fā)商都可以使用OAUTH。</p><p> 3.3.3 OAUTH認證機制的運行過程</p><p> (1) 使用者(第三方軟件)向OAUTH服務提供商請求未授權的Request Token。向Request Token URL發(fā)起請求,請求需要帶上的參數(shù)見上圖。 </p>&l
55、t;p> (2) OAUTH服務提供商同意使用者的請求,并向其頒發(fā)未經(jīng)用戶授權的oauth_token與對應的oauth_token_secret,并返回給使用者。 </p><p> (3) 使用者向OAUTH服務提供商請求用戶授權的Request Token。向User Authorization URL發(fā)起請求,請求帶上上步拿到的未授權的token與其密鑰。 </p><p&g
56、t; (4) OAUTH服務提供商將引導用戶授權。該過程可能會提示用戶,你想將哪些受保護的資源授權給該應用。此步可能會返回授權的Request Token也可能不返回。如Yahoo OAUTH就不會返回任何信息給使用者。 </p><p> (5) Request Token 授權后,使用者將向Access Token URL發(fā)起請求,將上步授權的Request Token換取成Access Token。請求
57、的參數(shù)見上圖,這個比第一步A多了一個參數(shù)就是Request Token。 </p><p> (6) OAUTH服務提供商同意使用者的請求,并向其頒發(fā)Access Token與對應的密鑰,并返回給使用者。 </p><p> (7) 使用者以后就可以使用上步返回的Access Token訪問用戶授權的資源。 </p><p> 從上面的步驟可以看出,用戶始終沒
58、有將其用戶名與密碼等信息提供給使用者(第三方軟件),從而更安全。用OAUTH實現(xiàn)背景一節(jié)中的典型案例:當服務B(打印服務)要訪問用戶的服務A(圖片服務)時,通過OAUTH機制,服務B向服務A請求未經(jīng)用戶授權的Request Token后,服務A將引導用戶在服務A的網(wǎng)站上登錄,并詢問用戶是否將圖片服務授權給服務B。用戶同意后,服務B就可以訪問用戶在服務A上的圖片服務。整個過程服務B沒有有觸及到用戶在服務A的帳號信息。</p>
59、<p> 圖3-2騰訊微博OAUTH授權認證過程</p><p> 3.4 微博客戶端信息抓取流程</p><p> 騰訊微博的信息抓取是利用騰訊公司提供的API接口,添加上相應的參數(shù),把信息傳遞給騰訊公司服務器,騰訊公司再把所要求的信息傳遞給本地,從而完成微博的信息傳遞過程。</p><p> 請求函數(shù)SyncRequest()</p&g
60、t;<p><b> 信息返回給客戶端</b></p><p> 圖3-3 SyncRequest()函數(shù)</p><p> 3.4.1 CWeiboParam參數(shù)類及微博相關參數(shù)簡介</p><p> 在每次向騰訊微博服務器請求用戶數(shù)據(jù)時,都要都要將用戶想要進行的操作以參數(shù)的形式傳遞給騰訊微博服務器,然后騰訊服務器將用戶
61、請求返回給客戶端。在騰訊公司提供的API中,參數(shù)類型是CWeiboParam類,通過該類提供的函數(shù)AddParam(const char* pKey, const char* pValue),將參數(shù)名和參數(shù)值傳遞到其類對象中。并且該類還提供Clear()函數(shù),用來清除該類對象里的所有參數(shù),以方便此類對象可以重復利用。</p><p> 由于騰訊微博API采用的是OAUTH簽權認證方式,所以客戶端在每次請求用戶數(shù)
62、據(jù)時,都要將用戶登錄時留下的Tokenkey,Tokensecret授權信息及開發(fā)者的身份信息Appkey,Appsecret傳遞進去,以獲得獲取用戶信息的權限。</p><p> 除此之外,客戶端還要將用戶進行相應操作所需要的相關信息添加到該參數(shù)類中。例如,若用戶想要獲取一條微博數(shù)據(jù),就要將該微博的身份標示ID已經(jīng)想要服務器返回的信息格式format傳到CWeiboParam參數(shù)類對象中</p>
63、<p> CWeiboParam& oParam; //定義類對象</p><p> oParam.AddParam("Appkey", strAppkey.c_str());</p><p> oParam.AddParam("Appsecret", strAppsecret.c_str());</p>
64、<p> oParam.AddParam("Tokenkey",strTokenkey.c_str());</p><p> oParam.AddParam("Tokensecret",strTokensecret.c_str());</p><p><b> //傳遞授權信息</b></p>
65、<p> oParams.AddParam("format","json");</p><p> oParams.AddParam("id",Wbid);</p><p> //傳遞將要獲取的微博相關信息</p><p> 3.4.2 信息傳遞函數(shù)SyncRequest()簡介</p
66、><p> SyncRequest()函數(shù)是騰訊微博API函數(shù)核心,通過這個函數(shù),客戶端將用戶將要進行的操作,以及此操作需要的相關參數(shù)傳遞給騰訊微博服務器,并且把從服務器傳遞回來的相關數(shù)據(jù)存儲到某一參數(shù)中。</p><p> SyncRequest()函數(shù)的定義如下:</p><p> SyncRequest(const char* pReqUrl, EHttpM
67、ethod eHttpMethod, CWeiboParam oQWBlogParam, char* &pResultData,int &nLen);</p><p> 下面就來對此函數(shù)中的參數(shù)進行說明:</p><p> (1) 其中pReqUrl參數(shù)的傳遞內(nèi)容是一個URL鏈接,該URL鏈接對應的含義就是用戶想要進行的操作,通過這個URL鏈接,客戶端就會告訴騰訊微博服
68、務器用戶想要進行什么樣的操作。例如URL"http://open.t.qq.com/api/t/show",就是告訴騰訊微博服務器想要獲取該用戶的一條微博。</p><p> (2) SyncRequest()函數(shù)中第二個參數(shù)eHttpMethod是一個枚舉類型的參數(shù)其定義如下:</p><p> enum EHttpMethod</p><p
69、><b> {</b></p><p> EHttpMethod_Get,</p><p> EHttpMethod_Post,</p><p><b> };</b></p><p> 其中EHttpMethod_Get代表的是獲取信息,是要告訴服務器此次操作是想從服務器中獲取相關
70、的信息,比如說獲取微博,用戶信息等;而EHttpMethod_Post代表的是向服務器推送信息,告訴服務器我這里有信息需要讓服務器更新,比如說用戶發(fā)新微博,對某一微博進行評論等,都需要用此參數(shù)。</p><p> (4) oQWBlogParam就是CWeiboParam參數(shù)類對象,用來傳遞與URL相對應的操作所需要的參數(shù)信息。</p><p> (5) pResultData和nLe
71、n的作用是存儲從服務器返回的信息,以方便將來對信息進行解析。</p><p> (6) SyncRequest()的返回值是一個枚舉類型的變量,通過SyncRequest()函數(shù)的返回值,可以知道客戶端的請求是否成功,或者如果失敗了,是是失敗在什么地方。例如:若返回值為HTTPRESULT_OK,表明返回成功,若返HTTPRESULT_ERROR,則表明HTTP請求的數(shù)據(jù)錯誤導致客戶端操作失敗。</p&g
72、t;<p> 以上就是SyncRequest()函數(shù)的所有參數(shù)的含義,通過此函數(shù)并添加上相應的參數(shù),客戶端就能從騰訊服務器中獲取或推送消息,從而完成微博客戶端最核心的內(nèi)容。</p><p> 3.5 對返回值的解析</p><p> 當客戶端使用SyncRequest()函數(shù)從騰訊服務器請求數(shù)據(jù)后,服務器會返回給客戶端一個字符串,這個字符串會根據(jù)我們請求數(shù)據(jù)時填寫的參數(shù)
73、類型返回不同格式的字符串,主要分為兩種,Json格式和XML格式,通過對這兩種格式的解析,我們就能獲得我們想要的相關數(shù)據(jù)。</p><p> 3.5.1 Json格式簡介</p><p> JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式。它基于JavaScript(Standard ECMA-262 3rd Edition - Decemb
74、er 1999)的一個子集。 JSON采用完全獨立于語言的文本格式,但是也使用了類似于C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的數(shù)據(jù)交換語言。易于人閱讀和編寫,同時也易于機器解析和生成。JSON建構有兩種結構:</p><p> (1) “名稱/值”對的集合(A collection of name/value p
75、airs)。不同的語言中,它被理解為對象(object),記錄(record),結構(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關聯(lián)數(shù)組(associative array)。</p><p> (2) 值的有序列表(An ordered list of values)。在大部分語言中,它被理解為數(shù)組(array)。</p>
76、<p><b> 例如:</b></p><p><b> {</b></p><p> name:"中國",</p><p> province:[</p><p><b> {</b></p><p> n
77、ame:"黑龍江",</p><p><b> cities:{</b></p><p> city:["哈爾濱","大慶"]</p><p><b> }</b></p><p><b> },</b><
78、;/p><p><b> {</b></p><p> name:"廣東",</p><p><b> cities:{</b></p><p> city:["廣州","深圳","珠海"]</p>&
79、lt;p><b> }</b></p><p><b> },</b></p><p><b> ]</b></p><p><b> }</b></p><p> 其中name和”中國”就是對應的名稱和鍵值,而province是一個數(shù)組結
80、構,它的里面包含了幾組類型相似的結構,如上例的name:”黑龍江”和name:”廣東”就是兩個相似結構結構里代表相同涵義的對象。</p><p> 3.5.2 騰訊微博API對Json格式的解析</p><p> 在騰訊提供的API中使用JsonParser類對返回的字符串進行Json格式的解析,一般情況下分為以下三步:</p><p> (1) 通過Json
81、Parser類提供的Parse函數(shù),將返回的字符串轉(zhuǎn)換成Json字符串,例如:</p><p> JsonParser theGwParser;//定義JsonParser 類對象theGwParser.Parse(strGwResult.c_str());//完成字符串的轉(zhuǎn)換</p><p> 這樣就把返回值strGwResult轉(zhuǎn)換成了Json字符串格式。</p>&
82、lt;p> (2) 通過JsonParser類提供的GetChild(const char* pName)函數(shù),獲得第一步中得到的Json字符串的子節(jié)點,如果需要獲得的內(nèi)容是該子節(jié)點中的子節(jié)點,則可以繼續(xù)使用GetChild(const char* pName)函數(shù)以后的自己需要的關鍵字;如果獲得的子節(jié)點中是數(shù)組格式,則可以使用GetChild(const char* pName)函數(shù)的重載函數(shù)GetChild(const in
83、t nIndex)獲得相應的數(shù)組序列內(nèi)容,再使用GetChild(const char* pName)函數(shù)獲得數(shù)組內(nèi)容中關鍵字。GetChild()函數(shù)的返回值依舊是JsonParser類型的字符串。例如:</p><p> 若Json字符串里面不含數(shù)組:</p><p> JsonParser name = theGwParser.GetChild("name"
84、);//找到關鍵字name</p><p> 若Json字符串里面含數(shù)組:</p><p> JsonParser info = theGwParser.GetChild(0);//定位到響應的數(shù)組序號</p><p> JsonParser name = info.GetChild("name");//找到關鍵字name</p&
85、gt;<p> JsonParser id = info.GetChild("id");//找到關鍵字ID</p><p> (3) 當我們找到想要的關鍵字之后,我們需要使用JsonParser類提供GetString()函數(shù)獲得該關鍵字的值,GetString()函數(shù)的返回值為char* 類型的;如果關鍵字的值的類型是int類型的,則我們需要使用GetInt()函數(shù),獲得
86、該關鍵字的值</p><p><b> 例如:</b></p><p> char* Myname = name.GetString();//將name的值賦值給Myname</p><p> int ids = id.GetInt() ;//將id的值賦值給ids</p><p> 通過以上三個步驟,我們就能夠
87、從服務器返回的字符串中獲得我們想要的相關信息,從而信息呈獻給觀眾。</p><p> 3.5.3 XML格式簡介</p><p> 可擴展標記語言 (Extensible Markup Language, XML) ,用于標記電子文件使其具有結構性的標記語言,可以用來標記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對自己的標記語言進行定義的源語言。 XML是標準通用標記語言 (SGML) 的子集
88、,非常適合 Web 傳輸。XML 提供統(tǒng)一的方法來描述和交換獨立于應用程序或供應商的結構化數(shù)據(jù)。它有如下幾個特點: (1) 簡單: XML與Access,Oracle和SQL Server等數(shù)據(jù)庫不同,數(shù)據(jù)庫提供了更強有力的數(shù)據(jù)存儲和分析能力,例如:數(shù)據(jù)索引、排序、查找、相關一致性等,XML僅僅是存儲數(shù)據(jù)。事實上XML與其他數(shù)據(jù)表現(xiàn)形式最大的不同是:他極其簡單。這是一個看上去有點瑣細的優(yōu)點,但正是這點使XML與眾不同。
89、(2) 結合: XML的簡單使其易于在任何應用程序中讀寫數(shù)據(jù),這使XML很快成為數(shù)據(jù)交換的唯一公共語言,雖然不同的應用軟件也支持其它的數(shù)據(jù)交換格式,但不久之后他們都將支持XML,那就意味著程序可以更容易的與Windows,Mac OS,Linux以及其他平臺下產(chǎn)生的信息結合,然后可以很容易加載XML數(shù)</p><p> 3.5.4 騰訊微博API對XML格式的解析</p><p>
90、在騰訊微博提供的API中,XML解析的方法與Json格式解析的方法是一模一樣的,先利用提供的Parse()函數(shù)將返回的字符串轉(zhuǎn)換為XML格式,然后使用GetChild()函數(shù)獲得相應的子標簽,最后再用GetString()函數(shù)將標簽的值提取出來,從而完成對XML格式的解析。</p><p> 3.6 字符串格式的轉(zhuǎn)換</p><p> 前面通過使用GetString()函數(shù)得到Json
91、格式或XML格式關鍵字的值,但是一般情況得到的此值是不能直接使用的,因為在VS2010中默認使用的是Unicode字符集,而騰訊微博服務器返回的值為多字節(jié)字符集,所以直接存在一個轉(zhuǎn)換的問題;另外在VS2010中,字符串的處理一般使用CString格式進行字符串的處理,而在處理將多字節(jié)字符集轉(zhuǎn)換為Unicode字符集的過程中,函數(shù)的參數(shù)及返回值多為char*類型或者string類型,所以中間又牽涉到一個char*,string和CStri
92、ng三種類型的轉(zhuǎn)換問題。</p><p> 3.6.1 Unicode字符集與多字節(jié)字符集的區(qū)別</p><p> 多字節(jié)字符集(multi-byte character set or MBCS),是指在編碼中,一個字符由后者多個字符共同表示在Windows里的MBCS包含兩種字符類型:單字節(jié)字符(single byte characters)和雙字節(jié)字符(double byte ch
93、aracters)。由于Windows里使用的多字節(jié)字符絕大部分是兩個字節(jié)長,MBCS常被DBCS代替。 Unicode是一種所有的字符都使用兩個字節(jié)編碼的編碼模式。Unicode字符有時也被稱作寬字符。 Unicode與MBCS的區(qū)別是:MBCS字符可以使用不同長度的字節(jié)編碼,而Unicode只能使用兩字節(jié)進行編碼。例如"BOb"這個單詞在系統(tǒng)中存儲的形式: Unicode的存
94、儲形式: | 42 00 | 6F 00 | 62 00 | 00 00 | |-----------------------------------------------| | B | &
95、#160; o | b | BO</p><p> MBCS的存儲形式: | 42 | 6F | 6
96、2 | 00 | |-----------------------------------------------| | B | o | b
97、60; | BOS |</p><p> 從上圖中就可以可以清楚地看出MBCS格式與Unicode存儲形式的區(qū)別,所以在不同編碼格式字符串中,如果不進行轉(zhuǎn)換,則在字符串的處理過程中勢必會造成亂碼等錯誤。在騰訊微博提供的API中,MBCS與Unicode的轉(zhuǎn)換是通過Utf8ToMbcs()函數(shù)進行的.</p><p> 3.6.2 char*、string和CStri
98、ng的轉(zhuǎn)換</p><p> string和CString均是字符串模板類,string為標準模板類(STL)定義的字符串類,已經(jīng)納入C++標準之中而char*為C編程中最常用的字符串指針,一般以'\0'為結束標志。它們?nèi)咧g的轉(zhuǎn)換方法如下:</p><p> (1) string 與 CString</p><p> string轉(zhuǎn)CStr
99、ing :CString.format(”%s”, string.c_str());</p><p> CString轉(zhuǎn)string :string s(CString.GetBuffer());</p><p> (2) char* 與CString</p><p> char* 轉(zhuǎn) CString:CString.format(”%s”, char*);&
100、lt;/p><p> CString 轉(zhuǎn) char*:char* p= CString.GetBuffer(CString.GetLength());</p><p> (3) char* 與string</p><p> char轉(zhuǎn)string :string s(char *);</p><p> string轉(zhuǎn)char*:char
101、*p = string.c_str();</p><p> 四、軟件詳細設計與實現(xiàn)</p><p> 4.1 相關變量的定義</p><p> 在程序中,因為要頻繁的使用用戶的相關信息,且不只要在一個才類里面使用,所以,為了方便使用,把用戶的相關信息,包括姓名,昵稱,粉絲數(shù),廣播數(shù)等等定義為一個全局結構體,這樣就可以方便的在各個類里進行調(diào)用了。定義如下:<
102、;/p><p> typedef struct info</p><p><b> {</b></p><p> CString infName;//用戶名稱 </p><p> CString infNick; //用戶昵稱</p><p> CString infHead ; //用戶頭
103、像的網(wǎng)絡地址</p><p> CString infHeadPath ; //用戶頭像的本地地址</p><p> CString infId ; //用戶ID</p><p> CString infFansnum ; //用戶粉絲數(shù)</p><p> CString infIdolnum ; //用戶收聽數(shù)</p>
104、<p> CString infTweetnum ; //用戶廣播數(shù)</p><p> }information ;</p><p> extern information MyInf ;</p><p> 同樣的,對于某一條微博的相關信息,也需要在不同的幾個類里使用,所以,把一條微博的相關信息也定義為一個全局的結構體變量,定義如下:</
105、p><p> typedef struct WBInf</p><p><b> {</b></p><p> CString WBId;//微博的ID</p><p> CString WB;//微博的內(nèi)容</p><p> CString WBPicUrl;//微博配圖的網(wǎng)路地址<
106、/p><p> CString WBPicPath;//微博配圖的本地地址</p><p> }MyWbInf ;</p><p> extern MyWbInf WbListInf ;</p><p> 4.2 相關圖片的獲取和顯示</p><p> 在一個微博客戶端中,不僅要能顯示用戶的頭像圖片,而且還有很多
107、微博是配備了圖片,所以圖片的顯示也是微博客戶端的一個重要功能。用戶圖像的獲取與微博的圖片獲取方式相似。在客戶端獲得獲取用戶的相關信息后,對服務器的返回值進行JSON類型的解析,其中包含有“head”關鍵字,此關鍵字的值就是用戶頭像在網(wǎng)絡上url地址,在這里,我們通過URLDownloadToFile()函數(shù),將用戶的頭像從網(wǎng)絡上的url地址下載下來,實現(xiàn)代碼如下:</p><p> URLDownloadToF
108、ile(0,MyInf.infHead,L"c:\\120.bmp",0,NULL);</p><p> 其中MyInf.infHead中存儲的用戶頭像的網(wǎng)絡地址,“c:\\120.bmp”是圖像的存儲位置。</p><p> 微博配圖的獲取用戶頭像的獲取方式基本相似,只不過微博配圖網(wǎng)絡地址是通過解析獲取微博命令的返回值而得到的,同樣的使用URLDownloadTo
109、File()函數(shù)將其下載下來。</p><p> 因為在mfc中的控件只能加載BMP格式的圖片,所以使用URLDownloadToFile()</p><p> 函數(shù)時,將圖片類型保存為了bmp格式。</p><p> 在客戶端顯示圖片的方面,我們使用的MFC提供的Picture Control控件,通過獲取該控件的顯示區(qū)域,將圖片顯示在正確的位置。實現(xiàn)代碼如
110、下:</p><p> CRect rect;</p><p> m_staticBitMap.GetClientRect(&rect); //獲取相應控件的顯示區(qū)域</p><p> CImage image; </p><p> image.Load(MyInf.infHeadPath); //加載要顯
111、示的圖片路徑</p><p> CDC* pDC = m_staticBitMap.GetWindowDC(); </p><p> image.Draw( pDC -> m_hDC,rect); //圖片在控件上顯示 </p><p> ReleaseDC(pDC);</p><p><b> retur
112、n 0;</b></p><p><b> 效果圖如下:</b></p><p> 圖4-1 用戶頭像的顯示</p><p> 圖4-2 微博配圖的顯示</p><p> 4.3 用戶登錄的設計與實現(xiàn)</p><p> 用戶在登陸客戶端的時候,先點擊客戶端上的授權鏈接到騰訊授
113、權服務頁面上輸入自己的用戶名和密碼,將得到的授權碼輸入到客戶端中就可完成登陸操作。如果用戶輸入的授權碼得不到騰訊服務器的認證,則用戶的登陸就失敗,程序就無法再向下進行。登陸界面如下:</p><p><b> 圖4-3 登陸界面</b></p><p> 用戶點擊“點擊從騰訊微博登陸”鏈接后,客戶端會和騰訊服務器通訊完成OAUTH認證的第一和第二步,當用戶輸入從授
114、權頁面獲得授權碼之后,客戶端會完成授權認證的第三部,獲得TokenKey和TokenSecrect,從而獲得獲取用戶信息的權限。點擊“點擊從騰訊微博登陸”后的事件響應如下:</p><p> void CLogInDlg::OnNMClickSyslink1(NMHDR *pNMHDR, LRESULT *pResult)</p><p><b> {</b>&l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設計(論文)騰訊微博客戶端的設計與實現(xiàn)
- 基于Android的騰訊微博客戶端應用軟件設計.pdf
- 基于android系統(tǒng)的騰訊微博客戶端的開發(fā).pdf
- 基于android系統(tǒng)的騰訊微博客戶端的開發(fā)(1)
- 移動博客客戶端軟件設計與實現(xiàn).pdf
- 基于android的微博客戶端
- 畢業(yè)設計--簡單ftp客戶端的實現(xiàn)
- 本科畢業(yè)設計-----新浪微博android客戶端的實現(xiàn)
- email客戶端畢業(yè)設計
- 畢業(yè)設計-----新浪微博android客戶端的實現(xiàn)(含外文翻譯)
- 畢業(yè)設計--簡單Ftp客戶端的實現(xiàn).doc
- 基于Android的微博客戶端 .doc
- 基于Unity引擎的騰訊桌球客戶端的設計與實現(xiàn).pdf
- 基于android的微博客戶端(1).pot
- 基于android的微博客戶端(1).pot
- 畢業(yè)設計---e-mail客戶端管理程序的設計與實現(xiàn)
- 視頻監(jiān)控系統(tǒng)的客戶端設計—畢業(yè)設計
- 畢業(yè)設計(論文)-基于手機客戶端的圖書搜索系統(tǒng)的設計與實現(xiàn)
- 客戶端CableModem的設計與實現(xiàn).pdf
- 畢業(yè)設計視頻監(jiān)控系統(tǒng)的客戶端設計.doc
評論
0/150
提交評論