騰訊微博客戶(hù)端的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩37頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  畢業(yè)設(shè)計(jì)(論文)</b></p><p>  題 目: 騰訊微博客戶(hù)端的設(shè)計(jì)與實(shí)現(xiàn) </p><p>  專(zhuān) 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù)(軟件工程)</p><p>  院(系): 信息工程學(xué)院 </p><p>

2、  完成時(shí)間: </p><p>  畢業(yè)設(shè)計(jì)(論文)任務(wù)書(shū)</p><p>  附表一 題目來(lái)源:探索學(xué)習(xí)</p><p>  畢業(yè)設(shè)計(jì)(論文)開(kāi)題報(bào)告</p><p><b>  附表二 <

3、;/b></p><p>  畢業(yè)設(shè)計(jì)工作中期檢查Ⅰ</p><p>  附表三 2012 年4 月2日</p><p>  畢業(yè)設(shè)計(jì)工作中期檢查Ⅱ</p><p>  附表四

4、 2012 年5 月3日</p><p>  騰訊微博客戶(hù)端的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  摘要:微博,即微博客(MicroBlog)的簡(jiǎn)稱(chēng),是一個(gè)基于用戶(hù)關(guān)系的信息分享、傳播以及獲取平臺(tái),用戶(hù)可以通過(guò)WEB、WAP以及各種客戶(hù)端組建個(gè)人社區(qū),以140字左右的文字更新信息,并實(shí)現(xiàn)即時(shí)分享。微博集成了手機(jī)短信、博客與社交網(wǎng)站的優(yōu)點(diǎn),將消費(fèi)者從原來(lái)單純

5、的信息接收者變成了接收和發(fā)布信息的完全參與者,從而讓社會(huì)走進(jìn)了全民記者時(shí)代。</p><p>  此客戶(hù)端是在VS2010平臺(tái)下利用微軟的MFC(微軟基礎(chǔ)類(lèi)庫(kù))進(jìn)行開(kāi)發(fā)的,通過(guò)調(diào)用騰訊微博開(kāi)放平臺(tái)提供的API接口,獲得騰訊微博用戶(hù)的相關(guān)信息。通過(guò)此客戶(hù)端,用戶(hù)可以獲得自己的信息,發(fā)表新微博,查看自己收聽(tīng)用戶(hù)的微博,并進(jìn)行評(píng)論與收藏。在界面方面,使用的是MFC提供的控件。通過(guò)對(duì)控件的功能的完善,可以使用戶(hù)更加方便的

6、使用客戶(hù)單完成微博的一些基本操作。</p><p>  關(guān)鍵詞:微博,騰訊,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微博的定義與特點(diǎn)1</p><p>  1.2.1微博的定義1</p><p>  1.2.2微博的特點(diǎn)2</p><p>  1.3國(guó)內(nèi)外研究發(fā)展綜述2</p><p>  1.3.1國(guó)外發(fā)展綜述2</p><p>  1.3.

13、2國(guó)內(nèi)發(fā)展綜述3</p><p>  二、系統(tǒng)開(kāi)發(fā)環(huán)境簡(jiǎn)介5</p><p>  2.1系統(tǒng)開(kāi)發(fā)軟件環(huán)境5</p><p>  2.1.1 Visualstudio.NET2010簡(jiǎn)介5</p><p>  2.1.2 騰訊微博開(kāi)放平臺(tái)5</p><p>  2.2系統(tǒng)開(kāi)發(fā)硬件環(huán)境6</p>

14、<p>  三、軟件需求分析與總體設(shè)計(jì)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 微博客戶(hù)端設(shè)計(jì)概要8</p><

15、p>  3.3 微博客戶(hù)端認(rèn)證機(jī)制8</p><p>  3.3.1 騰訊微博 API OAuth認(rèn)證介紹8</p><p>  3.3.2 OAuth認(rèn)證機(jī)制介紹8</p><p>  3.3.3 OAUTH認(rèn)證機(jī)制的運(yùn)行過(guò)程9</p><p>  3.4 微博客戶(hù)端信息抓取流程10</p><p>

16、  3.4.1 CWeiboParam參數(shù)類(lèi)及微博相關(guān)參數(shù)簡(jiǎn)介11</p><p>  3.4.2 信息傳遞函數(shù)SyncRequest()簡(jiǎn)介11</p><p>  3.5 對(duì)返回值的解析12</p><p>  3.5.1 Json格式簡(jiǎn)介12</p><p>  3.5.2 騰訊微博API對(duì)Json格式的解析14</p&

17、gt;<p>  3.5.3 XML格式簡(jiǎn)介15</p><p>  3.5.4 騰訊微博API對(duì)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>  四、軟件詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)18</p><p>  4.1 相關(guān)變量的定義18</p><p>  4.2 相關(guān)圖片的獲取和顯示19</p><p>  4.3 用戶(hù)登錄的設(shè)計(jì)與實(shí)現(xiàn)20</p><p>  4.4 用戶(hù)信息模塊的設(shè)計(jì)與實(shí)現(xiàn)21</p><p&g

19、t;  4.5 微博相關(guān)操作模塊的設(shè)計(jì)與實(shí)現(xiàn)23</p><p>  4.6 微博發(fā)布和評(píng)論模塊的設(shè)計(jì)與實(shí)現(xiàn)25</p><p><b>  五、開(kāi)發(fā)總結(jié)26</b></p><p><b>  致謝27</b></p><p><b>  參考文獻(xiàn)28</b><

20、;/p><p><b>  一、緒論</b></p><p><b>  1.1引言</b></p><p>  微博,即微博客(MicroBlog)的簡(jiǎn)稱(chēng),是一個(gè)基于用戶(hù)關(guān)系的信息分享、傳播以及獲取平臺(tái),用戶(hù)可以通過(guò)WEB、WAP以及各種客戶(hù)端組建個(gè)人社區(qū),以140字左右的文字更新信息,并實(shí)現(xiàn)即時(shí)分享。近3年來(lái),互聯(lián)網(wǎng)上4種

21、主要的社交媒體(SocialMedia)———微博、社交網(wǎng)站、視頻分享網(wǎng)站和開(kāi)放式百科全書(shū)從根本上改變了人類(lèi)的生活。人類(lèi)正以前所未有的速度和廣度傳遞信息,以計(jì)算機(jī)為媒介的溝通成為人們互動(dòng)溝通的重要方式。在這4種媒體中,微博后來(lái)居上。國(guó)外最早提供微博服務(wù)的網(wǎng)站是美國(guó)的Twitter,從2006年10月開(kāi)通至2011年1月在全球已擁有近2億注冊(cè)用戶(hù),年增長(zhǎng)率約1500%,每日訪問(wèn)量約30億國(guó)內(nèi)的新浪微博和騰訊微博均在開(kāi)通不到一年半的時(shí)間內(nèi)突

22、破1億用戶(hù)。微博集成了手機(jī)短信、博客與社交網(wǎng)站的優(yōu)點(diǎn),將消費(fèi)者從原來(lái)單純的信息接收者變成了接收和發(fā)布信息的完全參與者,從而讓社會(huì)走進(jìn)了全民記者時(shí)代。2010年我國(guó)最大的50起網(wǎng)絡(luò)輿情案例中約1/4是微博發(fā)起的,微博已成為企業(yè)和網(wǎng)民互動(dòng)溝通的新平臺(tái)。</p><p>  1.2微博的定義與特點(diǎn)</p><p>  1.2.1微博的定義</p><p>  國(guó)內(nèi)知名新媒

23、體領(lǐng)域研究學(xué)者陳永東在國(guó)內(nèi)率先給出了微博的定義:微博是一種通過(guò)關(guān)注機(jī)制分享簡(jiǎn)短實(shí)時(shí)信息的廣播式的社交網(wǎng)絡(luò)平臺(tái)。其中有五方面的理解:</p><p>  (1) 關(guān)注機(jī)制:可單向可雙向</p><p>  (2) 簡(jiǎn)短容:通常為140字</p><p>  (3) 實(shí)時(shí)信息:最新實(shí)時(shí)信息</p><p>  (4) 廣播式:公開(kāi)的信息,誰(shuí)都可以

24、瀏覽</p><p>  (5) 社交網(wǎng)絡(luò)平臺(tái):把微博歸為社交網(wǎng)絡(luò)</p><p>  1.2.2微博的特點(diǎn)</p><p>  微博客草根性更強(qiáng),且廣泛分布在桌面、瀏覽器、移動(dòng)終端等多個(gè)平臺(tái)上,有多種商業(yè)模式并存,或形成多個(gè)垂直細(xì)分領(lǐng)域的可能,但無(wú)論哪種商業(yè)模式,都離不開(kāi)用戶(hù)體驗(yàn)的特性和基本功能。</p><p>  (1) 信息獲取具有很

25、強(qiáng)的自主性、選擇性,用戶(hù)可以根據(jù)自己的興趣偏好,依據(jù)對(duì)方發(fā)布內(nèi)容的類(lèi)別與質(zhì)量,來(lái)選擇是否“關(guān)注”某用戶(hù),并可以對(duì)所有“關(guān)注”的用戶(hù)群進(jìn)行分類(lèi);</p><p>  (2) 微博宣傳的影響力具有很大彈性,與內(nèi)容質(zhì)量高度相關(guān)。其影響力基于用戶(hù)現(xiàn)有的被“關(guān)注”的數(shù)量。用戶(hù)發(fā)布信息的吸引力、新聞性越強(qiáng),對(duì)該用戶(hù)感興趣、關(guān)注該用戶(hù)的人數(shù)也越多,影響力越大。此外,微博平臺(tái)本身的認(rèn)證及推薦亦助于增加被“關(guān)注”的數(shù)量;</

26、p><p>  (3) 內(nèi)容短小精悍。微博的內(nèi)容限定為140字左右,內(nèi)容簡(jiǎn)短,不需長(zhǎng)篇大論,門(mén)檻較低;</p><p>  (4) 信息共享便捷迅速。可以通過(guò)各種連接網(wǎng)絡(luò)的平臺(tái),在任何時(shí)間、任何地點(diǎn)即時(shí)發(fā)布信息,其信息發(fā)布速度超過(guò)傳統(tǒng)紙媒及網(wǎng)絡(luò)媒體。</p><p>  1.3國(guó)內(nèi)外研究發(fā)展綜述</p><p>  1.3.1國(guó)外發(fā)展綜述<

27、;/p><p>  2006年3月,博客技術(shù)先驅(qū)blogger創(chuàng)始人埃文·威廉姆斯(EvanWilliams)創(chuàng)建的新興公司Obvious推出了大微博服務(wù)。在最初階段,這項(xiàng)服務(wù)只是用于向好友的手機(jī)發(fā)送文本信息。Twitter是2006年3月由blogger的創(chuàng)始人威廉姆斯(EvanWilliams)推出的,英文原意為小鳥(niǎo)的嘰嘰喳喳聲,用戶(hù)能用如發(fā)手機(jī)短信的數(shù)百種工具更新信息。Twitter的出現(xiàn)把世人的眼光

28、引入了一個(gè)叫微博的小小世界里。Twitter是一個(gè)社交網(wǎng)絡(luò)及微博客服務(wù)。用戶(hù)可以經(jīng)由SMS、即時(shí)通信、電郵、Twitter網(wǎng)站或Twitter客戶(hù)端軟件(如Twitterrific)輸入最多140字的文字更新,Twitter被Alexa網(wǎng)頁(yè)流量統(tǒng)計(jì)評(píng)定為最受歡迎的50個(gè)網(wǎng)絡(luò)應(yīng)用之一。在2007年5月,國(guó)際間計(jì)算總共有111個(gè)類(lèi)似Twitter的網(wǎng)站。然而,最值得注意的仍是Twitter,它于2007年在得克薩斯州奧斯汀舉辦的南非西南會(huì)議

29、贏得了部落格類(lèi)的網(wǎng)站獎(jiǎng)。Twitter的主要競(jìng)爭(zhēng)對(duì)手是Plurk和Jaiku。后來(lái)微博客的新服務(wù)特色持續(xù)誕生,例如Plurk有時(shí)間軸可以觀看整合了視訊和照片的分享,Ide</p><p>  1.3.2國(guó)內(nèi)發(fā)展綜述</p><p>  從2007年中國(guó)第一家?guī)в形⒉┥实娘埛窬W(wǎng)開(kāi)張,到2009年,微博這個(gè)全新的名詞,以摧枯拉朽的姿態(tài)掃蕩世界,打敗奧巴馬、甲流等等名詞,成為全世界最流行的詞匯

30、。伴隨而來(lái)的,是一場(chǎng)微博世界人氣的爭(zhēng)奪戰(zhàn),大批量的名人</p><p><b>  圖1-1 新浪微博</b></p><p>  被各大網(wǎng)站招攬,各路名人也以微博為平臺(tái),在網(wǎng)絡(luò)世界里聚集人氣,同樣,新的傳播工具也造就了無(wú)數(shù)的草根英雄,從默默無(wú)聞到新的話(huà)語(yǔ)傳播者,往往只在一夜之間、寥寥數(shù)語(yǔ)。2009年7月中旬開(kāi)始,國(guó)內(nèi)大批老牌微博產(chǎn)品(飯否、騰訊滔滔等)停止運(yùn)營(yíng),一些

31、新產(chǎn)品開(kāi)始進(jìn)入人們的視野,像開(kāi)放的嘰歪,6月份開(kāi)放的Follow5,7月份開(kāi)放的9911,8月份開(kāi)放的新浪微博,其中Follow5在2009年7月19日孫楠大連演唱會(huì)上的亮相,是國(guó)內(nèi)第一次將微博引入大型演藝活動(dòng),與twitter當(dāng)年的發(fā)展頗有幾分神似。2010年國(guó)內(nèi)微博迎來(lái)來(lái)春天,微博像雨后春筍般崛起。四大門(mén)戶(hù)網(wǎng)站均開(kāi)設(shè)微博。根據(jù)相關(guān)公開(kāi)數(shù)據(jù),截至2010年1月份,該產(chǎn)品在全球已經(jīng)擁有7500萬(wàn)注冊(cè)用戶(hù)。中國(guó)互聯(lián)網(wǎng)絡(luò)信息中心(CNNIC

32、)今日發(fā)布《第28次中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》,報(bào)告顯示,2011年上半年,中國(guó)微博用戶(hù)從6331萬(wàn)增至1.95億,增長(zhǎng)約2倍。該《報(bào)告》指出,中國(guó)互聯(lián)網(wǎng)的普及率增至36.2%,較2010年增加1.9%。2011年上半年,我國(guó)微博用戶(hù)數(shù)量從6331萬(wàn)增至1.95億,半年增幅高達(dá)208.9%。微博在網(wǎng)民中的普及率從13</p><p><b>  圖1-2騰訊微博</b></p>

33、;<p>  至今,新浪微博用戶(hù)數(shù)超過(guò)1億,得益于搶占了先機(jī),而且在整體的戰(zhàn)略執(zhí)行上也比較徹底到位,所以獲得了現(xiàn)在的地位。僅僅兩年時(shí)間,新浪微博就為新浪生下了一個(gè)價(jià)值幾十億美金的‘金蛋’。而另一個(gè)微博巨頭:騰訊微博,也呈現(xiàn)出發(fā)展迅猛的姿態(tài),騰訊擁有近5億的QQ注冊(cè)用戶(hù),2億左右的活躍用戶(hù)。這部分人群很容易受潮流趨勢(shì)的影響,開(kāi)通騰訊微博。通過(guò)騰訊微博能夠與QQ好友和騰訊微博上的其他用戶(hù)行行信息的分享。</p>

34、<p>  另外其作為重要的推廣渠道。企業(yè)用戶(hù)通過(guò)注冊(cè)騰訊官方微博,得到認(rèn)證后,能夠迅速的擴(kuò)大企業(yè)的知名度。個(gè)人用戶(hù)通過(guò)騰訊微博,也能再微博平臺(tái)進(jìn)行個(gè)人的推廣。目前,很多的社會(huì)事件揭露都來(lái)自于微博平臺(tái)。高校教育平臺(tái)也隨之建立,如騰訊微博校園上的高校新聞哥微博體系的發(fā)展,推動(dòng)了中國(guó)教育事業(yè)信息化發(fā)展的步伐。</p><p>  二、系統(tǒng)開(kāi)發(fā)環(huán)境簡(jiǎn)介</p><p>  2.1系統(tǒng)開(kāi)

35、發(fā)軟件環(huán)境</p><p>  2.1.1 Visualstudio.NET2010簡(jiǎn)介</p><p>  Visual Studio是微軟公司出品的一款大型應(yīng)用軟件,從最初的VisualStudio97開(kāi)始就成為編程的重要工具。VisualStudio.NET是一套完整的開(kāi)發(fā)工具,用于生成ASP Web應(yīng)用程序、XML Web services、桌面應(yīng)用程序和移動(dòng)應(yīng)用程序。Visual

36、Basic.NET、Visual C++.NET、VisualC#.NET和VisualJ#.NET全都使用相同的集成開(kāi)發(fā)環(huán)境(IDE),該環(huán)境允許它們共享工具并有助于創(chuàng)建混合語(yǔ)言解決方案。另外,這些語(yǔ)言利用了.NET Framework的功能,此框架提供對(duì)簡(jiǎn)化ASP Web應(yīng)用程序和XML Web services開(kāi)發(fā)的關(guān)鍵技術(shù)的訪問(wèn)。Visual Studio 2010版本于2010年4月12日上市,其集成開(kāi)發(fā)環(huán)境(IDE)的界面被

37、重新設(shè)計(jì)和組織,變得更加簡(jiǎn)單明了。Visual Studio 201O同時(shí)帶來(lái)了NETFramework4.0,MicrosoftVisualStudio2010CTP(CommunityTechnologyPreview--CTP)并且支持開(kāi)發(fā)面向Windows7的應(yīng)用程序。</p><p>  (1) 支持 Windows Azure,微軟云計(jì)算架構(gòu)邁入重要里程碑。</p><p> 

38、 (2) 助力移動(dòng)與嵌入式裝置開(kāi)發(fā),三屏一云商機(jī)無(wú)限。</p><p>  (3) 實(shí)踐當(dāng)前最熱門(mén)的 Agile/Scrum 開(kāi)發(fā)方法,強(qiáng)化團(tuán)隊(duì)競(jìng)爭(zhēng)力。</p><p>  (4) 升級(jí)的軟件測(cè)試功能及工具,為軟件質(zhì)量嚴(yán)格把關(guān)。</p><p>  (5) 搭配 Windows 7,Silverlight 4 與 Office,發(fā)揮多核并行運(yùn)算威力,</p&g

39、t;<p>  創(chuàng)建美感與效能并重的新一代軟件。</p><p>  (6) 支持最新C++標(biāo)準(zhǔn),增強(qiáng)IDE,切實(shí)提高程序員開(kāi)發(fā)效率。</p><p>  2.1.2 騰訊微博開(kāi)放平臺(tái)</p><p>  騰訊微博開(kāi)放平臺(tái),是基于騰訊微博系統(tǒng),為廣大開(kāi)發(fā)者和用戶(hù)提供的開(kāi)放數(shù)據(jù)分享與傳播平臺(tái)。廣大開(kāi)發(fā)者和用戶(hù)登錄平臺(tái)后,就可以使用平臺(tái)提供的開(kāi) 放API接

40、口,創(chuàng)建應(yīng)用從微博系統(tǒng)獲取信息,或?qū)⑿碌男畔鞑サ秸麄€(gè)微博系統(tǒng)中,豐富多樣的API接口和應(yīng)用,加上你的智慧,將創(chuàng)造出無(wú)窮的應(yīng)用和樂(lè)趣! </p><p>  (1) 平臺(tái)介紹 — 在微博開(kāi)放平臺(tái)能獲取到的資源及優(yōu)勢(shì) </p><p>  (2) 應(yīng)用開(kāi)發(fā)說(shuō)明 — 說(shuō)明如何成為一個(gè)開(kāi)發(fā)者并創(chuàng)建應(yīng)用 </p><p>  (3) 應(yīng)用審核流程 — 審核應(yīng)用的來(lái)源字段能獲

41、得的好處,以及如何審核 </p><p>  (4) 開(kāi)發(fā)者協(xié)議 — 在此查看騰訊微博開(kāi)放平臺(tái)開(kāi)發(fā)者服務(wù)協(xié)議</p><p>  2.2系統(tǒng)開(kāi)發(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>  三、軟件需求分析與總體設(shè)計(jì)</p><p><b>  3.1系統(tǒng)需求分析</b&g

43、t;</p><p>  3.1.1 功能需求</p><p>  微博作為現(xiàn)在人們生活中必不可少的工具,通過(guò)微博這個(gè)媒介,發(fā)布身邊的新鮮事,并且能對(duì)某一熱門(mén)話(huà)題進(jìn)行評(píng)論,必要的時(shí)候還可收藏自己喜歡的文字??梢哉f(shuō)文博極大地豐富了我們的生活。所以說(shuō),一個(gè)微博客戶(hù)端系統(tǒng),一定要包含如下的基本功能,來(lái)發(fā)揮微博的作用:</p><p>  (1) 用戶(hù)登錄自己的賬戶(hù)并查看自

44、己的個(gè)人信息。</p><p>  通過(guò)OAUTH認(rèn)證方式,用戶(hù)可以在不告知客戶(hù)端自己的賬號(hào)和密碼的情況下,安全的通過(guò)客戶(hù)端登陸騰訊微博,并且獲取自己的相關(guān)信息。</p><p>  (2) 用戶(hù)查看自己的新微博,獲取好友的最新動(dòng)態(tài)。</p><p>  用戶(hù)可以查看自己關(guān)注對(duì)象的微博,并能夠通過(guò)隨時(shí)刷新獲得最新的微博動(dòng)態(tài)。并且,用戶(hù)不僅能看到微博的文字內(nèi)容,還能看

45、到微博的相關(guān)配圖。</p><p>  (3) 用戶(hù)發(fā)表新微博,告訴好友自己身邊的新鮮事。</p><p>  用戶(hù)可以發(fā)表新的微博,隨時(shí)更新自己的狀態(tài)。</p><p>  (4) 用戶(hù)對(duì)好友的微博進(jìn)行評(píng)論,并且對(duì)自己喜愛(ài)的微博進(jìn)行收藏。</p><p>  用戶(hù)可以對(duì)看到的微博進(jìn)行評(píng)論,發(fā)表自己的意見(jiàn),當(dāng)用戶(hù)看到感興趣的微博時(shí),還收藏此微

46、博。</p><p>  3.1.2 穩(wěn)定性需求</p><p>  (1) 客戶(hù)端能夠長(zhǎng)時(shí)間的正確運(yùn)行,如果客戶(hù)端出錯(cuò),客戶(hù)端會(huì)有相應(yīng)的出錯(cuò)信息,能夠使用戶(hù)明白在哪里出錯(cuò)了,該怎么辦。</p><p>  (2) 減少無(wú)用的代碼,減少因此帶來(lái)的錯(cuò)誤,并使客戶(hù)端能夠盡可能快的對(duì)數(shù)據(jù)進(jìn)行處理</p><p>  3.1.3 其它需求</p

47、><p>  (1) 為保證客戶(hù)端的正常運(yùn)行,應(yīng)保證計(jì)算機(jī)能夠一直連接互聯(lián)網(wǎng)以獲取信息。</p><p>  (2) 使用圖形化界面,可使用鼠標(biāo)或鍵盤(pán)作為標(biāo)準(zhǔn)輸入設(shè)備。</p><p>  3.2 微博客戶(hù)端設(shè)計(jì)概要</p><p>  微博客戶(hù)端運(yùn)行主要分為兩個(gè)階段,第一階段:認(rèn)證階段,第二階段:信息獲取階段。用戶(hù)首先通過(guò)客戶(hù)端打開(kāi)的騰訊微博授

48、權(quán)界面獲得授權(quán)碼,然后將獲得授權(quán)碼交付給客戶(hù)端從而完成認(rèn)證階段??蛻?hù)端通過(guò)獲得認(rèn)證碼作為用戶(hù)授權(quán)的依據(jù),從而通過(guò)騰訊微博提供的API獲得用戶(hù)相關(guān)的微博信息。</p><p>  認(rèn)證 輸入賬戶(hù)相關(guān)信息</p><p><b>  階段</b></p><p><b>  返回授權(quán)碼&l

49、t;/b></p><p>  信息 通過(guò)授權(quán)信息</p><p>  獲取 </p><p>  階段 返回用戶(hù)微博的相關(guān)信息</p><p>  圖3-1客戶(hù)端運(yùn)行流程 </p><p>  3.

50、3 微博客戶(hù)端認(rèn)證機(jī)制</p><p>  3.3.1 騰訊微博 API OAuth認(rèn)證介紹</p><p>  騰訊微博開(kāi)放平臺(tái),是基于騰訊微博系統(tǒng),為廣大開(kāi)發(fā)者和用戶(hù)提供的開(kāi)放數(shù)據(jù)分享與傳播平臺(tái)。 廣大開(kāi)發(fā)者和用戶(hù)登錄平臺(tái)后,就可以使用平臺(tái)提供的開(kāi)放API接口,創(chuàng)建應(yīng)用從微博系統(tǒng)獲取信息,或?qū)⑿碌男畔鞑サ秸麄€(gè)微博系統(tǒng)中,豐富多樣的API接口和應(yīng)用,加上您的智慧,將創(chuàng)造出無(wú)窮的應(yīng)用和樂(lè)

51、趣。 騰訊微博API采用OAuth協(xié)議為第三方提供接入服務(wù),遵循[RFC-5849]規(guī)范。有關(guān)OAuth認(rèn)證的詳細(xì)說(shuō)明,請(qǐng)閱讀官方OAuth規(guī)范。各種語(yǔ)言的OAuth 客戶(hù)端可以在Google-OAuth項(xiàng)目里找到。 騰訊微博API使用OAuth 1.0a版本。</p><p>  3.3.2 OAuth認(rèn)證機(jī)制介紹</p><p>  OAUTH協(xié)議為用戶(hù)資源的授權(quán)提供了一個(gè)安全的、開(kāi)放

52、而又簡(jiǎn)易的標(biāo)準(zhǔn)。與以往的授權(quán)方式不同之處是OAUTH的授權(quán)不會(huì)使第三方觸及到用戶(hù)的帳號(hào)信息(如用戶(hù)名與密碼),即第三方無(wú)需使用用戶(hù)的用戶(hù)名與密碼就可以申請(qǐng)獲得該用戶(hù)資源的授權(quán),因此OAUTH是安全的。同時(shí),任何第三方都可以使用OAUTH認(rèn)證服務(wù),任何服務(wù)提供商都可以實(shí)現(xiàn)自身的OAUTH認(rèn)證服務(wù),因而OAUTH是開(kāi)放的。業(yè)界提供了OAUTH的多種實(shí)現(xiàn)如PHP、JavaScript,Java,Ruby等各種語(yǔ)言開(kāi)發(fā)包,大大節(jié)約了程序員的時(shí)間

53、,因而OAUTH是簡(jiǎn)易的。目前互聯(lián)網(wǎng)很多服務(wù)如Open API,很多大公司如Google,Yahoo,Microsoft等都提供了OAUTH認(rèn)證服務(wù),這些都足以說(shuō)明OAUTH標(biāo)準(zhǔn)逐漸成為開(kāi)放資源授權(quán)的標(biāo)準(zhǔn)。OAUTH認(rèn)證具有以下特點(diǎn):</p><p>  (1) 簡(jiǎn)單:不管是OAUTH服務(wù)提供者還是應(yīng)用開(kāi)發(fā)者,都很容易于理解與使用。</p><p>  (2) 安全:沒(méi)有涉及到用戶(hù)密鑰等信

54、息,更安全更靈活。 (3) 開(kāi)放:任何服務(wù)提供商都可以實(shí)現(xiàn)OAUTH,任何軟件開(kāi)發(fā)商都可以使用OAUTH。</p><p>  3.3.3 OAUTH認(rèn)證機(jī)制的運(yùn)行過(guò)程</p><p>  (1) 使用者(第三方軟件)向OAUTH服務(wù)提供商請(qǐng)求未授權(quán)的Request Token。向Request Token URL發(fā)起請(qǐng)求,請(qǐng)求需要帶上的參數(shù)見(jiàn)上圖。 </p>&l

55、t;p>  (2) OAUTH服務(wù)提供商同意使用者的請(qǐng)求,并向其頒發(fā)未經(jīng)用戶(hù)授權(quán)的oauth_token與對(duì)應(yīng)的oauth_token_secret,并返回給使用者。 </p><p>  (3) 使用者向OAUTH服務(wù)提供商請(qǐng)求用戶(hù)授權(quán)的Request Token。向User Authorization URL發(fā)起請(qǐng)求,請(qǐng)求帶上上步拿到的未授權(quán)的token與其密鑰。 </p><p&g

56、t;  (4) OAUTH服務(wù)提供商將引導(dǎo)用戶(hù)授權(quán)。該過(guò)程可能會(huì)提示用戶(hù),你想將哪些受保護(hù)的資源授權(quán)給該應(yīng)用。此步可能會(huì)返回授權(quán)的Request Token也可能不返回。如Yahoo OAUTH就不會(huì)返回任何信息給使用者。 </p><p>  (5) Request Token 授權(quán)后,使用者將向Access Token URL發(fā)起請(qǐng)求,將上步授權(quán)的Request Token換取成Access Token。請(qǐng)求

57、的參數(shù)見(jiàn)上圖,這個(gè)比第一步A多了一個(gè)參數(shù)就是Request Token。 </p><p>  (6) OAUTH服務(wù)提供商同意使用者的請(qǐng)求,并向其頒發(fā)Access Token與對(duì)應(yīng)的密鑰,并返回給使用者。 </p><p>  (7) 使用者以后就可以使用上步返回的Access Token訪問(wèn)用戶(hù)授權(quán)的資源。 </p><p>  從上面的步驟可以看出,用戶(hù)始終沒(méi)

58、有將其用戶(hù)名與密碼等信息提供給使用者(第三方軟件),從而更安全。用OAUTH實(shí)現(xiàn)背景一節(jié)中的典型案例:當(dāng)服務(wù)B(打印服務(wù))要訪問(wèn)用戶(hù)的服務(wù)A(圖片服務(wù))時(shí),通過(guò)OAUTH機(jī)制,服務(wù)B向服務(wù)A請(qǐng)求未經(jīng)用戶(hù)授權(quán)的Request Token后,服務(wù)A將引導(dǎo)用戶(hù)在服務(wù)A的網(wǎng)站上登錄,并詢(xún)問(wèn)用戶(hù)是否將圖片服務(wù)授權(quán)給服務(wù)B。用戶(hù)同意后,服務(wù)B就可以訪問(wèn)用戶(hù)在服務(wù)A上的圖片服務(wù)。整個(gè)過(guò)程服務(wù)B沒(méi)有有觸及到用戶(hù)在服務(wù)A的帳號(hào)信息。</p>

59、<p>  圖3-2騰訊微博OAUTH授權(quán)認(rèn)證過(guò)程</p><p>  3.4 微博客戶(hù)端信息抓取流程</p><p>  騰訊微博的信息抓取是利用騰訊公司提供的API接口,添加上相應(yīng)的參數(shù),把信息傳遞給騰訊公司服務(wù)器,騰訊公司再把所要求的信息傳遞給本地,從而完成微博的信息傳遞過(guò)程。</p><p>  請(qǐng)求函數(shù)SyncRequest()</p&g

60、t;<p><b>  信息返回給客戶(hù)端</b></p><p>  圖3-3 SyncRequest()函數(shù)</p><p>  3.4.1 CWeiboParam參數(shù)類(lèi)及微博相關(guān)參數(shù)簡(jiǎn)介</p><p>  在每次向騰訊微博服務(wù)器請(qǐng)求用戶(hù)數(shù)據(jù)時(shí),都要都要將用戶(hù)想要進(jìn)行的操作以參數(shù)的形式傳遞給騰訊微博服務(wù)器,然后騰訊服務(wù)器將用戶(hù)

61、請(qǐng)求返回給客戶(hù)端。在騰訊公司提供的API中,參數(shù)類(lèi)型是CWeiboParam類(lèi),通過(guò)該類(lèi)提供的函數(shù)AddParam(const char* pKey, const char* pValue),將參數(shù)名和參數(shù)值傳遞到其類(lèi)對(duì)象中。并且該類(lèi)還提供Clear()函數(shù),用來(lái)清除該類(lèi)對(duì)象里的所有參數(shù),以方便此類(lèi)對(duì)象可以重復(fù)利用。</p><p>  由于騰訊微博API采用的是OAUTH簽權(quán)認(rèn)證方式,所以客戶(hù)端在每次請(qǐng)求用戶(hù)數(shù)

62、據(jù)時(shí),都要將用戶(hù)登錄時(shí)留下的Tokenkey,Tokensecret授權(quán)信息及開(kāi)發(fā)者的身份信息Appkey,Appsecret傳遞進(jìn)去,以獲得獲取用戶(hù)信息的權(quán)限。</p><p>  除此之外,客戶(hù)端還要將用戶(hù)進(jìn)行相應(yīng)操作所需要的相關(guān)信息添加到該參數(shù)類(lèi)中。例如,若用戶(hù)想要獲取一條微博數(shù)據(jù),就要將該微博的身份標(biāo)示ID已經(jīng)想要服務(wù)器返回的信息格式format傳到CWeiboParam參數(shù)類(lèi)對(duì)象中</p>

63、<p>  CWeiboParam& oParam; //定義類(lèi)對(duì)象</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>  //傳遞授權(quán)信息</b></p>

65、<p>  oParams.AddParam("format","json");</p><p>  oParams.AddParam("id",Wbid);</p><p>  //傳遞將要獲取的微博相關(guān)信息</p><p>  3.4.2 信息傳遞函數(shù)SyncRequest()簡(jiǎn)介</p

66、><p>  SyncRequest()函數(shù)是騰訊微博API函數(shù)核心,通過(guò)這個(gè)函數(shù),客戶(hù)端將用戶(hù)將要進(jìn)行的操作,以及此操作需要的相關(guān)參數(shù)傳遞給騰訊微博服務(wù)器,并且把從服務(wù)器傳遞回來(lái)的相關(guān)數(shù)據(jù)存儲(chǔ)到某一參數(shù)中。</p><p>  SyncRequest()函數(shù)的定義如下:</p><p>  SyncRequest(const char* pReqUrl, EHttpM

67、ethod eHttpMethod, CWeiboParam oQWBlogParam, char* &pResultData,int &nLen);</p><p>  下面就來(lái)對(duì)此函數(shù)中的參數(shù)進(jìn)行說(shuō)明:</p><p>  (1) 其中pReqUrl參數(shù)的傳遞內(nèi)容是一個(gè)URL鏈接,該URL鏈接對(duì)應(yīng)的含義就是用戶(hù)想要進(jìn)行的操作,通過(guò)這個(gè)URL鏈接,客戶(hù)端就會(huì)告訴騰訊微博服

68、務(wù)器用戶(hù)想要進(jìn)行什么樣的操作。例如URL"http://open.t.qq.com/api/t/show",就是告訴騰訊微博服務(wù)器想要獲取該用戶(hù)的一條微博。</p><p>  (2) SyncRequest()函數(shù)中第二個(gè)參數(shù)eHttpMethod是一個(gè)枚舉類(lèi)型的參數(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代表的是獲取信息,是要告訴服務(wù)器此次操作是想從服務(wù)器中獲取相關(guān)

70、的信息,比如說(shuō)獲取微博,用戶(hù)信息等;而EHttpMethod_Post代表的是向服務(wù)器推送信息,告訴服務(wù)器我這里有信息需要讓服務(wù)器更新,比如說(shuō)用戶(hù)發(fā)新微博,對(duì)某一微博進(jìn)行評(píng)論等,都需要用此參數(shù)。</p><p>  (4) oQWBlogParam就是CWeiboParam參數(shù)類(lèi)對(duì)象,用來(lái)傳遞與URL相對(duì)應(yīng)的操作所需要的參數(shù)信息。</p><p>  (5) pResultData和nLe

71、n的作用是存儲(chǔ)從服務(wù)器返回的信息,以方便將來(lái)對(duì)信息進(jìn)行解析。</p><p>  (6) SyncRequest()的返回值是一個(gè)枚舉類(lèi)型的變量,通過(guò)SyncRequest()函數(shù)的返回值,可以知道客戶(hù)端的請(qǐng)求是否成功,或者如果失敗了,是是失敗在什么地方。例如:若返回值為HTTPRESULT_OK,表明返回成功,若返HTTPRESULT_ERROR,則表明HTTP請(qǐng)求的數(shù)據(jù)錯(cuò)誤導(dǎo)致客戶(hù)端操作失敗。</p&g

72、t;<p>  以上就是SyncRequest()函數(shù)的所有參數(shù)的含義,通過(guò)此函數(shù)并添加上相應(yīng)的參數(shù),客戶(hù)端就能從騰訊服務(wù)器中獲取或推送消息,從而完成微博客戶(hù)端最核心的內(nèi)容。</p><p>  3.5 對(duì)返回值的解析</p><p>  當(dāng)客戶(hù)端使用SyncRequest()函數(shù)從騰訊服務(wù)器請(qǐng)求數(shù)據(jù)后,服務(wù)器會(huì)返回給客戶(hù)端一個(gè)字符串,這個(gè)字符串會(huì)根據(jù)我們請(qǐng)求數(shù)據(jù)時(shí)填寫(xiě)的參數(shù)

73、類(lèi)型返回不同格式的字符串,主要分為兩種,Json格式和XML格式,通過(guò)對(duì)這兩種格式的解析,我們就能獲得我們想要的相關(guān)數(shù)據(jù)。</p><p>  3.5.1 Json格式簡(jiǎn)介</p><p>  JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式。它基于JavaScript(Standard ECMA-262 3rd Edition - Decemb

74、er 1999)的一個(gè)子集。 JSON采用完全獨(dú)立于語(yǔ)言的文本格式,但是也使用了類(lèi)似于C語(yǔ)言家族的習(xí)慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的數(shù)據(jù)交換語(yǔ)言。易于人閱讀和編寫(xiě),同時(shí)也易于機(jī)器解析和生成。JSON建構(gòu)有兩種結(jié)構(gòu):</p><p>  (1) “名稱(chēng)/值”對(duì)的集合(A collection of name/value p

75、airs)。不同的語(yǔ)言中,它被理解為對(duì)象(object),記錄(record),結(jié)構(gòu)(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關(guān)聯(lián)數(shù)組(associative array)。</p><p>  (2) 值的有序列表(An ordered list of values)。在大部分語(yǔ)言中,它被理解為數(shù)組(array)。</p>

76、<p><b>  例如:</b></p><p><b>  {</b></p><p>  name:"中國(guó)",</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和”中國(guó)”就是對(duì)應(yīng)的名稱(chēng)和鍵值,而province是一個(gè)數(shù)組結(jié)

80、構(gòu),它的里面包含了幾組類(lèi)型相似的結(jié)構(gòu),如上例的name:”黑龍江”和name:”廣東”就是兩個(gè)相似結(jié)構(gòu)結(jié)構(gòu)里代表相同涵義的對(duì)象。</p><p>  3.5.2 騰訊微博API對(duì)Json格式的解析</p><p>  在騰訊提供的API中使用JsonParser類(lèi)對(duì)返回的字符串進(jìn)行Json格式的解析,一般情況下分為以下三步:</p><p>  (1) 通過(guò)Json

81、Parser類(lèi)提供的Parse函數(shù),將返回的字符串轉(zhuǎn)換成Json字符串,例如:</p><p>  JsonParser theGwParser;//定義JsonParser 類(lèi)對(duì)象theGwParser.Parse(strGwResult.c_str());//完成字符串的轉(zhuǎn)換</p><p>  這樣就把返回值strGwResult轉(zhuǎn)換成了Json字符串格式。</p>&

82、lt;p>  (2) 通過(guò)JsonParser類(lèi)提供的GetChild(const char* pName)函數(shù),獲得第一步中得到的Json字符串的子節(jié)點(diǎn),如果需要獲得的內(nèi)容是該子節(jié)點(diǎn)中的子節(jié)點(diǎn),則可以繼續(xù)使用GetChild(const char* pName)函數(shù)以后的自己需要的關(guān)鍵字;如果獲得的子節(jié)點(diǎn)中是數(shù)組格式,則可以使用GetChild(const char* pName)函數(shù)的重載函數(shù)GetChild(const in

83、t nIndex)獲得相應(yīng)的數(shù)組序列內(nèi)容,再使用GetChild(const char* pName)函數(shù)獲得數(shù)組內(nèi)容中關(guān)鍵字。GetChild()函數(shù)的返回值依舊是JsonParser類(lèi)型的字符串。例如:</p><p>  若Json字符串里面不含數(shù)組:</p><p>  JsonParser name = theGwParser.GetChild("name"

84、);//找到關(guān)鍵字name</p><p>  若Json字符串里面含數(shù)組:</p><p>  JsonParser info = theGwParser.GetChild(0);//定位到響應(yīng)的數(shù)組序號(hào)</p><p>  JsonParser name = info.GetChild("name");//找到關(guān)鍵字name</p&

85、gt;<p>  JsonParser id = info.GetChild("id");//找到關(guān)鍵字ID</p><p>  (3) 當(dāng)我們找到想要的關(guān)鍵字之后,我們需要使用JsonParser類(lèi)提供GetString()函數(shù)獲得該關(guān)鍵字的值,GetString()函數(shù)的返回值為char* 類(lèi)型的;如果關(guān)鍵字的值的類(lèi)型是int類(lèi)型的,則我們需要使用GetInt()函數(shù),獲得

86、該關(guān)鍵字的值</p><p><b>  例如:</b></p><p>  char* Myname = name.GetString();//將name的值賦值給Myname</p><p>  int ids = id.GetInt() ;//將id的值賦值給ids</p><p>  通過(guò)以上三個(gè)步驟,我們就能夠

87、從服務(wù)器返回的字符串中獲得我們想要的相關(guān)信息,從而信息呈獻(xiàn)給觀眾。</p><p>  3.5.3 XML格式簡(jiǎn)介</p><p>  可擴(kuò)展標(biāo)記語(yǔ)言 (Extensible Markup Language, XML) ,用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語(yǔ)言,可以用來(lái)標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類(lèi)型,是一種允許用戶(hù)對(duì)自己的標(biāo)記語(yǔ)言進(jìn)行定義的源語(yǔ)言。 XML是標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言 (SGML) 的子集

88、,非常適合 Web 傳輸。XML 提供統(tǒng)一的方法來(lái)描述和交換獨(dú)立于應(yīng)用程序或供應(yīng)商的結(jié)構(gòu)化數(shù)據(jù)。它有如下幾個(gè)特點(diǎn): (1) 簡(jiǎn)單: XML與Access,Oracle和SQL Server等數(shù)據(jù)庫(kù)不同,數(shù)據(jù)庫(kù)提供了更強(qiáng)有力的數(shù)據(jù)存儲(chǔ)和分析能力,例如:數(shù)據(jù)索引、排序、查找、相關(guān)一致性等,XML僅僅是存儲(chǔ)數(shù)據(jù)。事實(shí)上XML與其他數(shù)據(jù)表現(xiàn)形式最大的不同是:他極其簡(jiǎn)單。這是一個(gè)看上去有點(diǎn)瑣細(xì)的優(yōu)點(diǎn),但正是這點(diǎn)使XML與眾不同。

89、(2) 結(jié)合: XML的簡(jiǎn)單使其易于在任何應(yīng)用程序中讀寫(xiě)數(shù)據(jù),這使XML很快成為數(shù)據(jù)交換的唯一公共語(yǔ)言,雖然不同的應(yīng)用軟件也支持其它的數(shù)據(jù)交換格式,但不久之后他們都將支持XML,那就意味著程序可以更容易的與Windows,Mac OS,Linux以及其他平臺(tái)下產(chǎn)生的信息結(jié)合,然后可以很容易加載XML數(shù)</p><p>  3.5.4 騰訊微博API對(duì)XML格式的解析</p><p>  

90、在騰訊微博提供的API中,XML解析的方法與Json格式解析的方法是一模一樣的,先利用提供的Parse()函數(shù)將返回的字符串轉(zhuǎn)換為XML格式,然后使用GetChild()函數(shù)獲得相應(yīng)的子標(biāo)簽,最后再用GetString()函數(shù)將標(biāo)簽的值提取出來(lái),從而完成對(duì)XML格式的解析。</p><p>  3.6 字符串格式的轉(zhuǎn)換</p><p>  前面通過(guò)使用GetString()函數(shù)得到Json

91、格式或XML格式關(guān)鍵字的值,但是一般情況得到的此值是不能直接使用的,因?yàn)樵赩S2010中默認(rèn)使用的是Unicode字符集,而騰訊微博服務(wù)器返回的值為多字節(jié)字符集,所以直接存在一個(gè)轉(zhuǎn)換的問(wèn)題;另外在VS2010中,字符串的處理一般使用CString格式進(jìn)行字符串的處理,而在處理將多字節(jié)字符集轉(zhuǎn)換為Unicode字符集的過(guò)程中,函數(shù)的參數(shù)及返回值多為char*類(lèi)型或者string類(lèi)型,所以中間又牽涉到一個(gè)char*,string和CStri

92、ng三種類(lèi)型的轉(zhuǎn)換問(wèn)題。</p><p>  3.6.1 Unicode字符集與多字節(jié)字符集的區(qū)別</p><p>  多字節(jié)字符集(multi-byte character set or MBCS),是指在編碼中,一個(gè)字符由后者多個(gè)字符共同表示在Windows里的MBCS包含兩種字符類(lèi)型:?jiǎn)巫止?jié)字符(single byte characters)和雙字節(jié)字符(double byte ch

93、aracters)。由于Windows里使用的多字節(jié)字符絕大部分是兩個(gè)字節(jié)長(zhǎng),MBCS常被DBCS代替。 Unicode是一種所有的字符都使用兩個(gè)字節(jié)編碼的編碼模式。Unicode字符有時(shí)也被稱(chēng)作寬字符。 Unicode與MBCS的區(qū)別是:MBCS字符可以使用不同長(zhǎng)度的字節(jié)編碼,而Unicode只能使用兩字節(jié)進(jìn)行編碼。例如"BOb"這個(gè)單詞在系統(tǒng)中存儲(chǔ)的形式:  Unicode的存

94、儲(chǔ)形式: |   42 00 |   6F 00  |   62 00  |   00 00  | |-----------------------------------------------| |   B    | &

95、#160;  o     |   b    |   BO</p><p>  MBCS的存儲(chǔ)形式: | 42    |   6F   |   6

96、2   | 00   |  |-----------------------------------------------|  | B     |   o    |   b  

97、60; | BOS  |</p><p>  從上圖中就可以可以清楚地看出MBCS格式與Unicode存儲(chǔ)形式的區(qū)別,所以在不同編碼格式字符串中,如果不進(jìn)行轉(zhuǎn)換,則在字符串的處理過(guò)程中勢(shì)必會(huì)造成亂碼等錯(cuò)誤。在騰訊微博提供的API中,MBCS與Unicode的轉(zhuǎn)換是通過(guò)Utf8ToMbcs()函數(shù)進(jìn)行的.</p><p>  3.6.2 char*、string和CStri

98、ng的轉(zhuǎn)換</p><p>  string和CString均是字符串模板類(lèi),string為標(biāo)準(zhǔn)模板類(lèi)(STL)定義的字符串類(lèi),已經(jīng)納入C++標(biāo)準(zhǔn)之中而char*為C編程中最常用的字符串指針,一般以'\0'為結(jié)束標(biāo)志。它們?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>  四、軟件詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)</p><p>  4.1 相關(guān)變量的定義</p><p>  在程序中,因?yàn)橐l繁的使用用戶(hù)的相關(guān)信息,且不只要在一個(gè)才類(lèi)里面使用,所以,為了方便使用,把用戶(hù)的相關(guān)信息,包括姓名,昵稱(chēng),粉絲數(shù),廣播數(shù)等等定義為一個(gè)全局結(jié)構(gòu)體,這樣就可以方便的在各個(gè)類(lèi)里進(jìn)行調(diào)用了。定義如下:<

102、;/p><p>  typedef struct info</p><p><b>  {</b></p><p>  CString infName;//用戶(hù)名稱(chēng) </p><p>  CString infNick; //用戶(hù)昵稱(chēng)</p><p>  CString infHead ; //用戶(hù)頭

103、像的網(wǎng)絡(luò)地址</p><p>  CString infHeadPath ; //用戶(hù)頭像的本地地址</p><p>  CString infId ; //用戶(hù)ID</p><p>  CString infFansnum ; //用戶(hù)粉絲數(shù)</p><p>  CString infIdolnum ; //用戶(hù)收聽(tīng)數(shù)</p>

104、<p>  CString infTweetnum ; //用戶(hù)廣播數(shù)</p><p>  }information ;</p><p>  extern information MyInf ;</p><p>  同樣的,對(duì)于某一條微博的相關(guān)信息,也需要在不同的幾個(gè)類(lèi)里使用,所以,把一條微博的相關(guān)信息也定義為一個(gè)全局的結(jié)構(gòu)體變量,定義如下:</

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 相關(guān)圖片的獲取和顯示</p><p>  在一個(gè)微博客戶(hù)端中,不僅要能顯示用戶(hù)的頭像圖片,而且還有很多

107、微博是配備了圖片,所以圖片的顯示也是微博客戶(hù)端的一個(gè)重要功能。用戶(hù)圖像的獲取與微博的圖片獲取方式相似。在客戶(hù)端獲得獲取用戶(hù)的相關(guān)信息后,對(duì)服務(wù)器的返回值進(jìn)行JSON類(lèi)型的解析,其中包含有“head”關(guān)鍵字,此關(guān)鍵字的值就是用戶(hù)頭像在網(wǎng)絡(luò)上url地址,在這里,我們通過(guò)URLDownloadToFile()函數(shù),將用戶(hù)的頭像從網(wǎng)絡(luò)上的url地址下載下來(lái),實(shí)現(xiàn)代碼如下:</p><p>  URLDownloadToF

108、ile(0,MyInf.infHead,L"c:\\120.bmp",0,NULL);</p><p>  其中MyInf.infHead中存儲(chǔ)的用戶(hù)頭像的網(wǎng)絡(luò)地址,“c:\\120.bmp”是圖像的存儲(chǔ)位置。</p><p>  微博配圖的獲取用戶(hù)頭像的獲取方式基本相似,只不過(guò)微博配圖網(wǎng)絡(luò)地址是通過(guò)解析獲取微博命令的返回值而得到的,同樣的使用URLDownloadTo

109、File()函數(shù)將其下載下來(lái)。</p><p>  因?yàn)樵趍fc中的控件只能加載BMP格式的圖片,所以使用URLDownloadToFile()</p><p>  函數(shù)時(shí),將圖片類(lèi)型保存為了bmp格式。</p><p>  在客戶(hù)端顯示圖片的方面,我們使用的MFC提供的Picture Control控件,通過(guò)獲取該控件的顯示區(qū)域,將圖片顯示在正確的位置。實(shí)現(xiàn)代碼如

110、下:</p><p>  CRect rect;</p><p>  m_staticBitMap.GetClientRect(&rect); //獲取相應(yīng)控件的顯示區(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 用戶(hù)頭像的顯示</p><p>  圖4-2 微博配圖的顯示</p><p>  4.3 用戶(hù)登錄的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  用戶(hù)在登陸客戶(hù)端的時(shí)候,先點(diǎn)擊客戶(hù)端上的授權(quán)鏈接到騰訊授

113、權(quán)服務(wù)頁(yè)面上輸入自己的用戶(hù)名和密碼,將得到的授權(quán)碼輸入到客戶(hù)端中就可完成登陸操作。如果用戶(hù)輸入的授權(quán)碼得不到騰訊服務(wù)器的認(rèn)證,則用戶(hù)的登陸就失敗,程序就無(wú)法再向下進(jìn)行。登陸界面如下:</p><p><b>  圖4-3 登陸界面</b></p><p>  用戶(hù)點(diǎn)擊“點(diǎn)擊從騰訊微博登陸”鏈接后,客戶(hù)端會(huì)和騰訊服務(wù)器通訊完成OAUTH認(rèn)證的第一和第二步,當(dāng)用戶(hù)輸入從授

114、權(quán)頁(yè)面獲得授權(quán)碼之后,客戶(hù)端會(huì)完成授權(quán)認(rèn)證的第三部,獲得TokenKey和TokenSecrect,從而獲得獲取用戶(hù)信息的權(quán)限。點(diǎn)擊“點(diǎn)擊從騰訊微博登陸”后的事件響應(yīng)如下:</p><p>  void CLogInDlg::OnNMClickSyslink1(NMHDR *pNMHDR, LRESULT *pResult)</p><p><b>  {</b>&l

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論