郑州大学信息工程学院软件学院2008级毕业设计 }
oParam.AddParam(c_strCustomSecrect.c_str(), strAppsecret.c_str()); oParam.AddParam(c_strTokenKey.c_str(),strTokenkey.c_str()); oParam.AddParam(c_strTokenSecrect.c_str(),strTokensecret.c_str()); return 0;
用户信息的获取是通过SyncRequest()函数向服务器请求信息,然后将获得字符串进行Json类型格式化,然后再对Json格式进行解析从而获得相关的数据。 其具体实现的函数如下:
int GetMyInfo(CWeiboParam& oParam) {
if (HTTPRESULT_OK == httpResult) {
JsonParser theParser;
if (!theParser.Parse(strResults.c_str())) { }
JsonParser theData = theParser.GetChild(\std::string Jsontotring =
return -1;
int num;
oParam.AddParam( \char* pchResults = NULL; int nResults = 0;
HTTP_RESULTCODE httpResult = HTTPRESULT_FAIL;
httpResult = SyncRequest(purlGetMyInfo, EHttpMethod_Get, oParam, string strResults; if (NULL != pchResults) { }
strResults = pchResults; ReleaseData(pchResults);
pchResults, nResults);
GetStringWithoutLeak(Util::String::Utf8ToMbcs(GetStringFromJson(theData.GetChild(\
22
郑州大学信息工程学院软件学院2008级毕业设计 MyInf.infNick= Jsontotring.c_str ();
Jsontotring =
GetStringWithoutLeak(Util::String::Utf8ToMbcs(GetStringFromJson(theData.GetChild(\
MyInf.infName= Jsontotring.c_str (); Jsontotring =
GetStringWithoutLeak(Util::String::Utf8ToMbcs(GetStringFromJson(theData.GetChild(\ }
}
return 0 ;
MyInf.infHead = Jsontotring.c_str ();
num= theData.GetChild(\MyInf.infIdolnum.Format(L\
num = theData.GetChild(\MyInf.infTweetnum.Format(L\num = theData.GetChild(\MyInf.infFansnum.Format(L\
4.5 微博相关操作模块的设计与实现
一旦客户端获得用户的授权信息,就可以向服务器请求用户的微博数据,
客户端将用的微博信息显示在对话框中,并能显示微博的配图,当用户点击显示的小图时,可以以大图的方式显示出来,使用户看得更加清晰,如图所示: ·
23
郑州大学信息工程学院软件学院2008级毕业设计 图4-5 微博信息
当我们需要查看下一条微博信息的时候,只需点击“下一条”按钮,就可以查看到下一条微博信息,点击“上一条”按钮就查看上一条微博信息。点击“更新”按钮,可以刷新到最新的微博信息。如果用户想要收藏此信息,则可以点击“收藏”按钮收藏此微博。如图所示:
图4-6 收藏微博
微博的收藏功能的实现方法如下: int CollectWb(CWeiboParam& oParam) { std::string strid = CStringA(WbListInf[0].WBId);//传递收藏微博的ID const char *WbId = strid.c_str();
oParam.AddParam(\传递参数 oParam.AddParam(\传递参数 char* pchResult = NULL;
int nResult = 0;
HTTP_RESULTCODE httpResult = HTTPRESULT_FAIL;
httpResult = SyncRequest(purCollectWeiBo, EHttpMethod_Post, oParam, pchResult, nResult);//向服务器发送请求
string strResult; if (NULL != pchResult) { strResult = pchResult; ReleaseData(pchResult);
}
if (HTTPRESULT_OK == httpResult)
24
郑州大学信息工程学院软件学院2008级毕业设计
{ }
return 0;
return 1; }
4.6 微博发布和评论模块的设计与实现
用户可以发表新的微博,只需在文本对话框里填写需要发表的内容,点击
“发布”按钮,就可以将想要发布的微博信息广播出去。
图4-7 发表微博
客户端将需要发送的字符创传递到微博参数中,然后通过SyncRequest()函数发送给腾讯服务器,就可以完成发布新微博的功能。
微博评论的功能与发表微博功能的实现方法类似,都是用SyncRequest()函数将需要评论的内容发送给腾讯服务器,另外,因为需要评论的是特定微博,所以在传递参数的过程中还要把要评论的微博ID传递到参数中,实现代码如下: oParam.AddParam(\//增加评论内容 oParam.AddParam(\//增加微博ID 实现效果图如下:
25
郑州大学信息工程学院软件学院2008级毕业设计
图4-8 评论微博
五、开发总结
本文首先介绍了开发工具Visual Studio 2010,MFC和腾讯微博开放平台提供的API等,接着对此系统的功能进行了需求分析,说明了需要完成的功能,介绍了微博客户端开发的总体流程,并说明了开发过程中遇到的问题以及该问题的解决办法。最后重点介绍了各功能模块的具体实现过程,并给出了运行时的图片以及相关代码作为说明。
通过这段时间研究,熟悉了腾讯微博客户端开发的基本流程,对微博系统的开发有了更深刻的认识。不仅如此,通过这次开发,也了解到了许多新的技术,并对以往的知识进行了更深入的认识,例如:OAUTH认证机制,Json格式的处理以及对windows平台上字符串处理的方式等等。极大地提升了认知及解决问题的能力。
此次腾讯微博客户端系统的开发基本满足了预期的所有需求,完成的功能有:
(1)使用OAUTH认证方式,使用户无需告知客户端账号和密码的情况下,使用腾讯微博客户端安全的登录到自己的微博账户。
(2)能过获取用户的基本信息,包括头像,用户名,听众数,收听数和广播数。
(3)用户能够通过此客户端发表新的微博。
(4)获取用收听的所有用户更新的微博,不仅包含文字,还包括微博的配图。 (5)用户能够对看到的微博进行评论,并能收藏此微博。
以上功能的实现,基本上满足了用对使用微博客户端的需求。并且经过测试,客户端的各项功能模块都能正常工作,系统运行稳定。基本完成了在需求分析阶
26