本文主要介绍腾讯微博android sdk中时间线有关的20个接口,以及正常获取及翻页的使用的示例代码及部分特例
注意:以下所有的api示例代码都需要先新建QqTSdkService类对象qqTSdkService并初始化,见sdk使用总介绍
1、20个接口介绍
这20个接口包含了腾讯微博四部分api
1.1、时间线中的除statuses/ht_timeline_ext(话题时间线)以外的15个api
1.2、私信相关中的收件箱、发件箱两个api
1.3、数据收藏中的收藏的微博列表和获取已订阅话题列表两个api
1.4、微博相关中的获取单条微博的转发或点评列表api
对应函数图如下(其中getTimeLineCommon为公用函数):
2、示例代码
由于这20个接口类似,仅以主页时间线(getHomeTL)为例,对于特殊接口再加以补充
2.1 函数形式
这20个接口同样都有三种返回结果即字符串、List<QqTStatus>、QqTResponse,可根据需要调用。
以主页时间线为例
public String getHomeTLStr(QqTTimelinePara qqTTimelinePara);
public List<QqTStatus> getHomeTL(QqTTimelinePara qqTTimelinePara);
public QqTResponse getHomeTLRes(QqTTimelinePara qqTTimelinePara);
getHomeTLStr返回整个结果的字符串,可以通过qqTTimelinePara.setFormat定义以xml还是json形式返回
getHomeTL将返回的json结果串中微博列表转换为QqTStatus list
getHomeTLRes返回QqTResponse,QqTResponse是先得到json串的结果,然后转换为QqTResponse对象
其中包含返回结果中各个字段含义。data字段为getHomeTL返回的微博list。
其他时间线api类似,参考腾讯微博api wiki对应api的参数,设置qqTTimelinePara即可
2.2 参数意义
对于各参数意义同腾讯微博时间线api参数,通过QqTTimelinePara传入,QqTTimelinePara各参数意义如下
2.3、不同返回结果调用示例
2.3.1 字符串形式返回
public void testGetHomeTLStr() {
QqTTimelinePara qqTTimelinePara = new QqTTimelinePara();
/** 设置返回结果格式 **/
qqTTimelinePara.setFormat(QqTConstant.VALUE_FORMAT_XML);
/** 设置分页标识 **/
qqTTimelinePara.setPageFlag(0);
/** 设置起始时间 **/
qqTTimelinePara.setPageTime(0);
/** 每次请求记录的条数 **/
qqTTimelinePara.setPageReqNum(QqTConstant.VALUE_PAGE_REQ_NUM);
/** 可以设置拉取类型,可取值QqTConstant中VALUE_STATUS_TYPE_TL_…,这里取原创发表 **/
qqTTimelinePara.setStatusType(QqTConstant.VALUE_STATUS_TYPE_TL_ORIGINAL);
/** 可以设置微博内容类型,可取值QqTConstant中VALUE_CONTENT_TYPE_TL…,这里取音乐 **/
qqTTimelinePara.setContentType(QqTConstant.VALUE_CONTENT_TYPE_TL_MUSIC);
String homeStr = qqTSdkService.getHomeTLStr(qqTTimelinePara);
assertTrue(homeStr != null);
}
2.3.2 List<QqTStatus>形式返回
public void testGetHomeTL() {
QqTTimelinePara qqTTimelinePara = new QqTTimelinePara();
/** 设置分页标识 **/
qqTTimelinePara.setPageFlag(0);
/** 设置起始时间 **/
qqTTimelinePara.setPageTime(0);
/** 每次请求记录的条数 **/
qqTTimelinePara.setPageReqNum(QqTConstant.VALUE_PAGE_REQ_NUM);
/** 可以设置拉取类型,可取值QqTConstant中VALUE_STATUS_TYPE_TL_… **/
qqTTimelinePara.setStatusType(QqTConstant.VALUE_STATUS_TYPE_TL_ALL);
/** 可以设置微博内容类型,可取值QqTConstant中VALUE_CONTENT_TYPE_TL… **/
qqTTimelinePara.setContentType(QqTConstant.VALUE_CONTENT_TYPE_TL_ALL);
List<QqTStatus> qqTStatusList = qqTSdkService.getHomeTL(qqTTimelinePara);
assertTrue(qqTStatusList != null);
}
2.3.3 QqTResponse形式返回
public void testGetHomeTLRes() {
QqTTimelinePara qqTTimelinePara = new QqTTimelinePara();
/** 设置分页标识 **/
qqTTimelinePara.setPageFlag(0);
/** 设置起始时间 **/
qqTTimelinePara.setPageTime(0);
/** 每次请求记录的条数 **/
qqTTimelinePara.setPageReqNum(QqTConstant.VALUE_PAGE_REQ_NUM);
/** 可以设置拉取类型,可取值QqTConstant中VALUE_STATUS_TYPE_TL_… **/
qqTTimelinePara.setStatusType(QqTConstant.VALUE_STATUS_TYPE_TL_ALL);
/** 可以设置微博内容类型,可取值QqTConstant中VALUE_CONTENT_TYPE_TL… **/
qqTTimelinePara.setContentType(QqTConstant.VALUE_CONTENT_TYPE_TL_ALL);
QqTResponse qqTResponse = qqTSdkService.getHomeTLRes(qqTTimelinePara);
assertTrue(qqTResponse != null);
}
2.4 翻页
需要setPageFlag、setPageTime以及setLastId,代码如下:
QqTTimelinePara qqTTimelinePara = new QqTTimelinePara();
/** 设置分页标识 **/
qqTTimelinePara.setPageFlag(0);
/** 设置起始时间 **/
qqTTimelinePara.setPageTime(0);
/** 每次请求记录的条数 **/
qqTTimelinePara.setPageReqNum(QqTConstant.VALUE_PAGE_REQ_NUM);
/** 可以设置拉取类型,可取值QqTConstant中VALUE_STATUS_TYPE_TL_… **/
qqTTimelinePara.setStatusType(QqTConstant.VALUE_STATUS_TYPE_TL_ALL);
/** 可以设置微博内容类型,可取值QqTConstant中VALUE_CONTENT_TYPE_TL… **/
qqTTimelinePara.setContentType(QqTConstant.VALUE_CONTENT_TYPE_TL_ALL);
List<QqTStatus> qqTStatusList = qqTSdkService.getHomeTL(qqTTimelinePara);
/** 第二页 **/
if (qqTStatusList.size() >= qqTTimelinePara.getPageReqNum()
&& qqTStatusList.get(qqTStatusList.size() - 1) != null) {
qqTTimelinePara.setPageFlag(QqTConstant.VALUE_NEXT_PAGE);
qqTTimelinePara.setPageTime(qqTStatusList.get(qqTStatusList.size() - 1).getTime());
qqTTimelinePara.setLastId(qqTStatusList.get(qqTStatusList.size() - 1).getStatusId());
List<QqTStatus> nextPageQqTStatusList = qqTSdkService.getHomeTL(qqTTimelinePara);
}
对于getHomeTLRes返回的结果QqTResponse,只需要取出其中的data转换为QqTListData类型,再得到info,从中得到上次最后一条微博信息传入即可
其他时间线api翻页可能需要传入不同的参数,具体参考腾讯微博api wiki对应api的参数,设置qqTTimelinePara即可
3、特例
关于获取单条微博的转发或点评列表的api为getStatusCommentsCommon,该api被三个函数调用,如下:
分别表示得到某条微博的评论、评论和转发、转发信息。以获得某条微博的评论列表(getStatusComments)为例,调用如下:
public void testGetStatusComments() {
QqTStatusInfoPara status = new QqTStatusInfoPara();
status.setStatusContent("发表一条微博用来查看评论列表啦");
QqTResponse qqTResponse = qqTSdkService.addStatusRes(status);
/** 先评论新增的微博,再获得评论列表 **/
if (qqTResponse.getIsOk() && qqTResponse.getData() != null) {
int commentCount = 2;
for (int i = 1; i <= commentCount; i++) {
/** 设置评论的微博id **/
status.setSourceId(((QqTIdAndTime)qqTResponse.getData()).getId());
status.setStatusContent("评论列表评论微博啦" + i);
qqTSdkService.comment(status);
}
/** 获得评论列表 **/
QqTTimelinePara qqTTimelinePara = new QqTTimelinePara();
qqTTimelinePara.setPageFlag(0);
qqTTimelinePara.setPageTime(0);
qqTTimelinePara.setPageReqNum(QqTConstant.VALUE_PAGE_REQ_NUM);
qqTTimelinePara.setTwitterId(0);
/** 设置微博id,表示获得该微博的评论列表 **/
qqTTimelinePara.setRootId(((QqTIdAndTime)qqTResponse.getData()).getId());
List<QqTStatus> qqTStatusList = qqTSdkService.getStatusComments(qqTTimelinePara);
assertTrue(qqTStatusList.size() == commentCount);
} else {
assertTrue(false);
}
}
上述代码主要完成发表一条微博,然后对其进行评论,最后获得评论列表
其中qqTSdkService.getStatusComments(qqTTimelinePara);为关键代码