腾讯微博客户端的设计与实现毕业设计说明书(含源程序)(5)

2020-02-21 02:58

郑州大学信息工程学院软件学院2008级毕业设计 用户将要进行的操作,以及此操作需要的相关参数传递给腾讯微博服务器,并且把从服务器传递回来的相关数据存储到某一参数中。 SyncRequest()函数的定义如下:

SyncRequest(const char* pReqUrl, EHttpMethod eHttpMethod, CWeiboParam oQWBlogParam, char* &pResultData,int &nLen); 下面就来对此函数中的参数进行说明:

(1) 其中pReqUrl参数的传递内容是一个URL链接,该URL链接对应的含义就是用户想要进行的操作,通过这个URL链接,客户端就会告诉腾讯微博服务器用户想要进行什么样的操作。例如URL\,就是告诉腾讯微博服务器想要获取该用户的一条微博。

(2) SyncRequest()函数中第二个参数eHttpMethod是一个枚举类型的参数其定义如下: enum EHttpMethod { };

其中EHttpMethod_Get代表的是获取信息,是要告诉服务器此次操作是想从服务器中获取相关的信息,比如说获取微博,用户信息等;而EHttpMethod_Post代表的是向服务器推送信息,告诉服务器我这里有信息需要让服务器更新,比如说用户发新微博,对某一微博进行评论等,都需要用此参数。

(4) oQWBlogParam就是CWeiboParam参数类对象,用来传递与URL相对应的操作所需要的参数信息。

(5) pResultData和nLen的作用是存储从服务器返回的信息,以方便将来对信息进行解析。

(6) SyncRequest()的返回值是一个枚举类型的变量,通过SyncRequest()函数的返回值,可以知道客户端的请求是否成功,或者如果失败了,是是失败在什么地方。例如:若返回值为HTTPRESULT_OK,表明返回成功,若返HTTPRESULT_ERROR,则表明HTTP请求的数据错误导致客户端操作失败。

EHttpMethod_Get, EHttpMethod_Post,

以上就是SyncRequest()函数的所有参数的含义,通过此函数并添加上相应

的参数,客户端就能从腾讯服务器中获取或推送消息,从而完成微博客户端最核心的内容。

12

郑州大学信息工程学院软件学院2008级毕业设计 3.5 对返回值的解析

当客户端使用SyncRequest()函数从腾讯服务器请求数据后,服务器会返回给客户端一个字符串,这个字符串会根据我们请求数据时填写的参数类型返回不同格式的字符串,主要分为两种,Json格式和XML格式,通过对这两种格式的解析,我们就能获得我们想要的相关数据。

3.5.1 Json格式简介

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。JSON建构有两种结构:

(1) “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组(associative array)。

(2) 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。 例如: {

{

name:\黑龙江\cities:{

city:[\哈尔滨\大庆\} },

{

name:\广东\cities:{

city:[\广州\深圳\珠海\}

13

name:\中国\province:[

郑州大学信息工程学院软件学院2008级毕业设计 }, }

其中name和”中国”就是对应的名称和键值,而province是一个数组结构,它的里面包含了几组类型相似的结构,如上例的name:”黑龙江”和name:”广东”就是两个相似结构结构里代表相同涵义的对象。

]

3.5.2 腾讯微博API对Json格式的解析

在腾讯提供的API中使用JsonParser类对返回的字符串进行Json格式的解析,一般情况下分为以下三步:

(1) 通过JsonParser类提供的Parse函数,将返回的字符串转换成Json字符串,例如:

JsonParser theGwParser;//定义JsonParser 类对象

theGwParser.Parse(strGwResult.c_str());//完成字符串的转换 这样就把返回值strGwResult转换成了Json字符串格式。

(2) 通过JsonParser类提供的GetChild(const char* pName)函数,获得第一步中得到的Json字符串的子节点,如果需要获得的内容是该子节点中的子节点,则可以继续使用GetChild(const char* pName)函数以后的自己需要的关键字;如果获得的子节点中是数组格式,则可以使用GetChild(const char* pName)函数的重载函数GetChild(const int nIndex)获得相应的数组序列内容,再使用GetChild(const char* pName)函数获得数组内容中关键字。GetChild()函数的返回值依旧是JsonParser类型的字符串。例如: 若Json字符串里面不含数组:

JsonParser name = theGwParser.GetChild(\//找到关键字name 若Json字符串里面含数组:

JsonParser info = theGwParser.GetChild(0);//定位到响应的数组序号 JsonParser name = info.GetChild(\//找到关键字name JsonParser id = info.GetChild(\//找到关键字ID

(3) 当我们找到想要的关键字之后,我们需要使用JsonParser类提供GetString()函数获得该关键字的值,GetString()函数的返回值为char* 类型的;如果关键字的值的类型是int类型的,则我们需要使用GetInt()函数,获得该关键字的值 例如:

14

郑州大学信息工程学院软件学院2008级毕业设计 char* Myname = name.GetString();//将name的值赋值给Myname int ids = id.GetInt() ;//将id的值赋值给ids

通过以上三个步骤,我们就能够从服务器返回的字符串中获得我们想要的相关信息,从而信息呈献给观众。

3.5.3 XML格式简介

可扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。它有如下几个特点:

(1) 简单: XML与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是存储数据。事实上XML与其他数据表现形式最大的不同是:他极其简单。这是一个看上去有点琐细的优点,但正是这点使XML与众不同。

(2) 结合: XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows,Mac OS,Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。

(3) 友好: 为了使得SGML显得用户友好,XML重新定义了SGML的一些内部

值和参数,去掉了大量的很少用到的功能,这些繁杂的功能使得SGML在设计网站时显得复杂化。XML保留了SGML的结构化功能,这样就使得网站设计者可以定义自己的文档类型,XML同时也推出一种新型文档类型,使得开发者也可以不必定义文档类型。 例如:

中国

黑龙江

哈尔滨

15

郑州大学信息工程学院软件学院2008级毕业设计 大庆

其中是一对标签,分别是起始标签和结束标签。XML规定某些起始标签可以选择性出现结束标签或者隐含了结束标签而另一些则必须要包含结束标签。

3.5.4 腾讯微博API对XML格式的解析

在腾讯微博提供的API中,XML解析的方法与Json格式解析的方法是一模一

样的,先利用提供的Parse()函数将返回的字符串转换为XML格式,然后使用GetChild()函数获得相应的子标签,最后再用GetString()函数将标签的值提取出来,从而完成对XML格式的解析。

3.6 字符串格式的转换

前面通过使用GetString()函数得到Json格式或XML格式关键字的值,但

是一般情况得到的此值是不能直接使用的,因为在VS2010中默认使用的是Unicode字符集,而腾讯微博服务器返回的值为多字节字符集,所以直接存在一个转换的问题;另外在VS2010中,字符串的处理一般使用CString格式进行字符串的处理,而在处理将多字节字符集转换为Unicode字符集的过程中,函数的参数及返回值多为char*类型或者string类型,所以中间又牵涉到一个char*,string和CString三种类型的转换问题。

3.6.1 Unicode字符集与多字节字符集的区别

多字节字符集(multi-byte character set or MBCS),是指在编码中,一个字符由后者多个字符共同表示在Windows里的MBCS包含两种字符类型:单字节字符(single byte characters)和双字节字符(double byte characters)。由于Windows里使用的多字节字符绝大部分是两个字节长,MBCS常被DBCS代替。

Unicode是一种所有的字符都使用两个字节编码的编码模式。Unicode字符

有时也被称作宽字符。

Unicode与MBCS的区别是:MBCS字符可以使用不同长度的字节编码,而

16


腾讯微博客户端的设计与实现毕业设计说明书(含源程序)(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:德系车和日系车比较及汽车发动机 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: