/* * Copyright (C) 2010-2013 The SINA WEIBO Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.sina.weibo.sdk.openapi.legacy; import android.content.Context; import android.graphics.Bitmap; import android.text.TextUtils; import com.sina.weibo.sdk.auth.Oauth2AccessToken; import com.sina.weibo.sdk.net.RequestListener; import com.sina.weibo.sdk.net.WeiboParameters; import com.sina.weibo.sdk.openapi.AbsOpenAPI; /** * 该类封装了微博接口。 * 详情请参考<a href="http://t.cn/8F3e7SE">微博接口</a> * * @author SINA * @date 2014-03-03 */ public class StatusesAPI extends AbsOpenAPI { /** 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐 */ public static final int FEATURE_ALL = 0; public static final int FEATURE_ORIGINAL = 1; public static final int FEATURE_PICTURE = 2; public static final int FEATURE_VIDEO = 3; public static final int FEATURE_MUSICE = 4; /** 作者筛选类型,0:全部、1:我关注的人、2:陌生人 */ public static final int AUTHOR_FILTER_ALL = 0; public static final int AUTHOR_FILTER_ATTENTIONS = 1; public static final int AUTHOR_FILTER_STRANGER = 2; /** 来源筛选类型,0:全部、1:来自微博的评论、2:来自微群的评论 */ public static final int SRC_FILTER_ALL = 0; public static final int SRC_FILTER_WEIBO = 1; public static final int SRC_FILTER_WEIQUN = 2; /** 原创筛选类型,0:全部微博、1:原创的微博。 */ public static final int TYPE_FILTER_ALL = 0; public static final int TYPE_FILTER_ORIGAL = 1; /** 获取类型,1:微博、2:评论、3:私信,默认为1。 */ public static final int TYPE_STATUSES = 1; public static final int TYPE_COMMENTS = 2; public static final int TYPE_MESSAGE = 3; /** 标识是否在转发的同时发表评论,0:否、1:评论给当前微博、2:评论给原微博、3:都评论,默认为0 */ public static final int COMMENTS_NONE = 0; public static final int COMMENTS_CUR_STATUSES = 1; public static final int COMMENTS_RIGAL_STATUSES = 2; public static final int COMMENTS_BOTH = 3; /** 表情类别,face:普通表情、ani:魔法表情、cartoon:动漫表情,默认为face。 */ public static final String EMOTION_TYPE_FACE = "face"; public static final String EMOTION_TYPE_ANI = "ani"; public static final String EMOTION_TYPE_CARTOON = "cartoon"; /** 语言类别,cnname:简体、twname:繁体,默认为cnname。 */ public static final String LANGUAGE_CNNAME = "cnname"; public static final String LANGUAGE_TWNAME = "twname"; public StatusesAPI(Context context, String appKey, Oauth2AccessToken accessToken) { super(context, appKey, accessToken); } private static final String SERVER_URL_PRIX = API_SERVER + "/statuses"; /** * 返回最新的公共微博。 * * @param count 单页返回的记录条数,默认为50 * @param page 返回结果的页码,默认为1 * @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false * @param listener 异步请求回调接口 */ public void publicTimeline(int count, int page, boolean base_app, RequestListener listener) { WeiboParameters params = new WeiboParameters(mAppKey); params.put("count", count); params.put("page", page); params.put("base_app", base_app ? 1 : 0); requestAsync(SERVER_URL_PRIX + "/public_timeline.json", params, HTTPMETHOD_GET, listener); } /** * 获取当前登录用户及其所关注用户的最新微博。 * * @param since_id 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0 * @param max_id 若指定此参数,则返回ID小于或等于max_id的微博,默认为0 * @param count 单页返回的记录条数,默认为50 * @param page 返回结果的页码,默认为1 * @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false * @param featureType 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0。 * <li> {@link #FEATURE_ALL} * <li> {@link #FEATURE_ORIGINAL} * <li> {@link #FEATURE_PICTURE} * <li> {@link #FEATURE_VIDEO} * <li> {@link #FEATURE_MUSICE} * @param trim_user 返回值中user字段开关,false:返回完整user字段、true:user字段仅返回user_id,默认为false * @param listener 异步请求回调接口 */ public void friendsTimeline(long since_id, long max_id, int count, int page, boolean base_app, int featureType, boolean trim_user, RequestListener listener) { WeiboParameters params = buildTimeLineWithAppTrim(since_id, max_id, count, page, base_app, trim_user, featureType); requestAsync(SERVER_URL_PRIX + "/friends_timeline.json", params, HTTPMETHOD_GET, listener); } /** * 获取当前登录用户及其所关注用户的最新微博的ID。 * * @param since_id 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0 * @param max_id 若指定此参数,则返回ID小于或等于max_id的微博,默认为0 * @param count 单页返回的记录条数,默认为50 * @param page 返回结果的页码,默认为1 * @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false * @param featureType 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0 * <li> {@link #FEATURE_ALL} * <li> {@link #FEATURE_ORIGINAL} * <li> {@link #FEATURE_PICTURE} * <li> {@link #FEATURE_VIDEO} * <li> {@link #FEATURE_MUSICE} * @param listener 异步请求回调接口 */ public void friendsTimelineIds(long since_id, long max_id, int count, int page, boolean base_app, int featureType, RequestListener listener) { WeiboParameters params = buildTimeLineWithApp(since_id, max_id, count, page, base_app, featureType); requestAsync(SERVER_URL_PRIX + "/friends_timeline/ids.json", params, HTTPMETHOD_GET, listener); } /** * 获取当前登录用户及其所关注用户的最新微博。 * * @param since_id 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0 * @param max_id 若指定此参数,则返回ID小于或等于max_id的微博,默认为0 * @param count 单页返回的记录条数,默认为50 * @param page 返回结果的页码,默认为1 * @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false * @param featureType 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0 * <li> {@link #FEATURE_ALL} * <li> {@link #FEATURE_ORIGINAL} * <li> {@link #FEATURE_PICTURE} * <li> {@link #FEATURE_VIDEO} * <li> {@link #FEATURE_MUSICE} * @param trim_user 返回值中user字段开关,false:返回完整user字段、true:user字段仅返回user_id,默认为false * @param listener 异步请求回调接口 */ public void homeTimeline(long since_id, long max_id, int count, int page, boolean base_app, int featureType, boolean trim_user, RequestListener listener) { WeiboParameters params = buildTimeLineWithAppTrim(since_id, max_id, count, page, base_app, trim_user, featureType); requestAsync(SERVER_URL_PRIX + "/home_timeline.json", params, HTTPMETHOD_GET, listener); } /** * 获取某个用户最新发表的微博列表。 * * @param uid 需要查询的用户ID * @param since_id 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0 * @param max_id 若指定此参数,则返回ID小于或等于max_id的微博,默认为0 * @param count 单页返回的记录条数,默认为50 * @param page 返回结果的页码,默认为1 * @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false * @param featureType 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0 * <li> {@link #FEATURE_ALL} * <li> {@link #FEATURE_ORIGINAL} * <li> {@link #FEATURE_PICTURE} * <li> {@link #FEATURE_VIDEO} * <li> {@link #FEATURE_MUSICE} * @param trim_user 返回值中user字段开关,false:返回完整user字段、true:user字段仅返回user_id,默认为false * @param listener 异步请求回调接口 */ public void userTimeline(long uid, long since_id, long max_id, int count, int page, boolean base_app, int featureType, boolean trim_user, RequestListener listener) { WeiboParameters params = buildTimeLineWithAppTrim(since_id, max_id, count, page, base_app, trim_user, featureType); params.put("uid", uid); requestAsync(SERVER_URL_PRIX + "/user_timeline.json", params, HTTPMETHOD_GET, listener); } /** * 获取某个用户最新发表的微博列表。 * * @param screen_name 需要查询的用户昵称 * @param since_id 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0 * @param max_id 若指定此参数,则返回ID小于或等于max_id的微博,默认为0 * @param count 单页返回的记录条数,默认为50 * @param page 返回结果的页码,默认为1 * @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false * @param featureType 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0 * <li> {@link #FEATURE_ALL} * <li> {@link #FEATURE_ORIGINAL} * <li> {@link #FEATURE_PICTURE} * <li> {@link #FEATURE_VIDEO} * <li> {@link #FEATURE_MUSICE} * @param trim_user 返回值中user字段开关,false:返回完整user字段、true:user字段仅返回user_id,默认为false * @param listener 异步请求回调接口 */ public void userTimeline(String screen_name, long since_id, long max_id, int count, int page, boolean base_app, int featureType, boolean trim_user, RequestListener listener) { WeiboParameters params = buildTimeLineWithAppTrim(since_id, max_id, count, page, base_app, trim_user, featureType); params.put("screen_name", screen_name); requestAsync(SERVER_URL_PRIX + "/user_timeline.json", params, HTTPMETHOD_GET, listener); } /** * 获取当前用户最新发表的微博列表 * * @param screen_name 需要查询的用户昵称 * @param since_id 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0 * @param max_id 若指定此参数,则返回ID小于或等于max_id的微博,默认为0 * @param count 单页返回的记录条数,默认为50 * @param page 返回结果的页码,默认为1 * @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false * @param featureType 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0 * <li> {@link #FEATURE_ALL} * <li> {@link #FEATURE_ORIGINAL} * <li> {@link #FEATURE_PICTURE} * <li> {@link #FEATURE_VIDEO} * <li> {@link #FEATURE_MUSICE} * @param trim_user 返回值中user字段开关,false:返回完整user字段、true:user字段仅返回user_id,默认为false * @param listener 异步请求回调接口 */ public void userTimeline(long since_id, long max_id, int count, int page, boolean base_app, int featureType, boolean trim_user, RequestListener listener) { WeiboParameters params = buildTimeLineWithAppTrim(since_id, max_id, count, page, base_app, trim_user, featureType); requestAsync(SERVER_URL_PRIX + "/user_timeline.json", params, HTTPMETHOD_GET, listener); } /** * 获取用户发布的微博的ID * * @param uid 需要查询的用户ID * @param since_id 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0 * @param max_id 若指定此参数,则返回ID小于或等于max_id的微博,默认为0 * @param count 单页返回的记录条数,默认为50 * @param page 返回结果的页码,默认为1 * @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false * @param featureType 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0 * <li> {@link #FEATURE_ALL} * <li> {@link #FEATURE_ORIGINAL} * <li> {@link #FEATURE_PICTURE} * <li> {@link #FEATURE_VIDEO} * <li> {@link #FEATURE_MUSICE} * @param listener 异步请求回调接口 */ public void userTimelineIds(long uid, long since_id, long max_id, int count, int page, boolean base_app, int featureType, RequestListener listener) { WeiboParameters params = buildTimeLineWithApp(since_id, max_id, count, page, base_app, featureType); params.put("uid", uid); requestAsync(SERVER_URL_PRIX + "/user_timeline/ids.json", params, HTTPMETHOD_GET, listener); } /** * 获取用户发布的微博的ID * * @param screen_name 需要查询的用户昵称 * @param since_id 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0 * @param max_id 若指定此参数,则返回ID小于或等于max_id的微博,默认为0 * @param count 单页返回的记录条数,默认为50 * @param page 返回结果的页码,默认为1 * @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false * @param featureType 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0 * <li> {@link #FEATURE_ALL} * <li> {@link #FEATURE_ORIGINAL} * <li> {@link #FEATURE_PICTURE} * <li> {@link #FEATURE_VIDEO} * <li> {@link #FEATURE_MUSICE} * @param listener 异步请求回调接口 */ public void userTimelineIds(String screen_name, long since_id, long max_id, int count, int page, boolean base_app, int featureType, RequestListener listener) { WeiboParameters params = buildTimeLineWithApp(since_id, max_id, count, page, base_app, featureType); params.put("screen_name", screen_name); requestAsync(SERVER_URL_PRIX + "/user_timeline/ids.json", params, HTTPMETHOD_GET, listener); } /** * 获取指定微博的转发微博列表 * * @param id 需要查询的微博ID。 * @param since_id 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0 * @param max_id 若指定此参数,则返回ID小于或等于max_id的微博,默认为0 * @param count 单页返回的记录条数,默认为50 * @param page 返回结果的页码,默认为1 * @param authorType 作者筛选类型,0:全部、1:我关注的人、2:陌生人,默认为0。可为以下几种: * <li> {@link #AUTHOR_FILTER_ALL} * <li> {@link #AUTHOR_FILTER_ATTENTIONS} * <li> {@link #AUTHOR_FILTER_STRANGER} * @param listener 异步请求回调接口 */ public void repostTimeline(long id, long since_id, long max_id, int count, int page, int authorType, RequestListener listener) { WeiboParameters params = buildTimeLineBase(since_id, max_id, count, page); params.put("id", id); params.put("filter_by_author", authorType); requestAsync(SERVER_URL_PRIX + "/repost_timeline.json", params, HTTPMETHOD_GET, listener); } /** * 获取一条原创微博的最新转发微博的ID。 * * @param id 需要查询的微博ID * @param since_id 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0 * @param max_id 若指定此参数,则返回ID小于或等于max_id的微博,默认为0 * @param count 单页返回的记录条数,默认为50 * @param page 返回结果的页码,默认为1 * @param authorType 作者筛选类型,0:全部、1:我关注的人、2:陌生人,默认为0。可为以下几种: * <li> {@link #AUTHOR_FILTER_ALL} * <li> {@link #AUTHOR_FILTER_ATTENTIONS} * <li> {@link #AUTHOR_FILTER_STRANGER} * @param listener 异步请求回调接口 */ public void repostTimelineIds(long id, long since_id, long max_id, int count, int page, int authorType, RequestListener listener) { WeiboParameters params = buildTimeLineBase(since_id, max_id, count, page); params.put("id", id); params.put("filter_by_author", authorType); requestAsync(SERVER_URL_PRIX + "/repost_timeline/ids.json", params, HTTPMETHOD_GET, listener); } /** * 获取当前用户最新转发的微博列表。 * * @param since_id 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0 * @param max_id 若指定此参数,则返回ID小于或等于max_id的微博,默认为0 * @param count 单页返回的记录条数,默认为50 * @param page 返回结果的页码,默认为1 * @param listener 异步请求回调接口 */ public void repostByMe(long since_id, long max_id, int count, int page, RequestListener listener) { WeiboParameters params = buildTimeLineBase(since_id, max_id, count, page); requestAsync(SERVER_URL_PRIX + "/repost_by_me.json", params, HTTPMETHOD_GET, listener); } /** * 获取最新的提到登录用户的微博列表,即@我的微博。 * * @param since_id 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0 * @param max_id 若指定此参数,则返回ID小于或等于max_id的微博,默认为0 * @param count 单页返回的记录条数,默认为50 * @param page 返回结果的页码,默认为1 * @param authorType 作者筛选类型,0:全部、1:我关注的人、2:陌生人,默认为0。可为以下几种: * <li> {@link #AUTHOR_FILTER_ALL} * <li> {@link #AUTHOR_FILTER_ATTENTIONS} * <li> {@link #AUTHOR_FILTER_STRANGER} * @param sourceType 来源筛选类型,0:全部、1:来自微博的评论、2:来自微群的评论。可分为以下几种: * <li> {@link #SRC_FILTER_ALL} * <li> {@link #SRC_FILTER_WEIBO} * <li> {@link #SRC_FILTER_WEIQUN} * @param filterType 原创筛选类型,0:全部微博、1:原创的微博,默认为0。可分为以下几种: * <li> {@link #TYPE_FILTER_ALL} * <li> {@link #TYPE_FILTER_ORIGAL} * @param trim_user 返回值中user字段开关,false:返回完整user字段、true:user字段仅返回user_id,默认为false * @param listener 异步请求回调接口 */ public void mentions(long since_id, long max_id, int count, int page, int authorType, int sourceType, int filterType, boolean trim_user, RequestListener listener) { WeiboParameters params = buildTimeLineBase(since_id, max_id, count, page); params.put("filter_by_author", authorType); params.put("filter_by_source", sourceType); params.put("filter_by_type", filterType); params.put("trim_user", trim_user ? 1 : 0); requestAsync(SERVER_URL_PRIX + "/mentions.json", params, HTTPMETHOD_GET, listener); } /** * 获取@当前用户的最新微博的ID。 * * @param since_id 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0 * @param max_id 若指定此参数,则返回ID小于或等于max_id的微博,默认为0 * @param count 单页返回的记录条数,默认为50 * @param page 返回结果的页码,默认为1 * @param authorType 作者筛选类型,0:全部、1:我关注的人、2:陌生人,默认为0。可为以下几种: * <li> {@link #AUTHOR_FILTER_ALL} * <li> {@link #AUTHOR_FILTER_ATTENTIONS} * <li> {@link #AUTHOR_FILTER_STRANGER} * @param sourceType 来源筛选类型,0:全部、1:来自微博的评论、2:来自微群的评论。可分为以下几种: * <li> {@link #SRC_FILTER_ALL} * <li> {@link #SRC_FILTER_WEIBO} * <li> {@link #SRC_FILTER_WEIQUN} * @param filterType 原创筛选类型,0:全部微博、1:原创的微博,默认为0。可分为以下几种: * <li> {@link #TYPE_FILTER_ALL} * <li> {@link #TYPE_FILTER_ORIGAL} * @param listener 异步请求回调接口 */ public void mentionsIds(long since_id, long max_id, int count, int page, int authorType, int sourceType, int filterType, RequestListener listener) { WeiboParameters params = buildTimeLineBase(since_id, max_id, count, page); params.put("filter_by_author", authorType); params.put("filter_by_source", sourceType); params.put("filter_by_type", filterType); requestAsync(SERVER_URL_PRIX + "/mentions/ids.json", params, HTTPMETHOD_GET, listener); } /** * 获取双向关注用户的最新微博。 * * @param since_id 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0 * @param max_id 若指定此参数,则返回ID小于或等于max_id的微博,默认为0 * @param count 单页返回的记录条数,默认为50 * @param page 返回结果的页码,默认为1 * @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false * @param featureType 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0 * <li> {@link #FEATURE_ALL} * <li> {@link #FEATURE_ORIGINAL} * <li> {@link #FEATURE_PICTURE} * <li> {@link #FEATURE_VIDEO} * <li> {@link #FEATURE_MUSICE} * @param trim_user 返回值中user字段开关,false:返回完整user字段、true:user字段仅返回user_id,默认为false * @param listener 异步请求回调接口 */ public void bilateralTimeline(long since_id, long max_id, int count, int page, boolean base_app, int featureType, boolean trim_user, RequestListener listener) { WeiboParameters params = buildTimeLineWithAppTrim(since_id, max_id, count, page, base_app, trim_user, featureType); requestAsync(SERVER_URL_PRIX + "/bilateral_timeline.json", params, HTTPMETHOD_GET, listener); } /** * 根据微博ID获取单条微博内容。 * * @param id 需要获取的微博ID * @param listener 异步请求回调接口 */ public void show(long id, RequestListener listener) { WeiboParameters params = new WeiboParameters(mAppKey); params.put("id", id); requestAsync(SERVER_URL_PRIX + "/show.json", params, HTTPMETHOD_GET, listener); } /** * 通过微博(评论、私信)ID获取其MID。 * * @param ids 需要查询的微博(评论、私信)ID,最多不超过20个。 * @param type 获取类型,1:微博、2:评论、3:私信,默认为1。可为几下几种: * <li> {@link #TYPE_STATUSES} * <li> {@link #TYPE_COMMENTS} * <li> {@link #TYPE_MESSAGE} * @param listener 异步请求回调接口 */ public void queryMID(long[] ids, int type, RequestListener listener) { WeiboParameters params = new WeiboParameters(mAppKey); if (1 == ids.length) { params.put("id", ids[0]); } else { params.put("is_batch", 1); StringBuilder strb = new StringBuilder(); for (long id : ids) { strb.append(id).append(","); } strb.deleteCharAt(strb.length() - 1); params.put("id", strb.toString()); } params.put("type", type); requestAsync(SERVER_URL_PRIX + "/querymid.json", params, HTTPMETHOD_GET, listener); } /** * 通过微博(评论、私信)MID获取其ID,形如“3z4efAo4lk”的MID即为经过base62转换的MID。 * * @param mids 需要查询的微博(评论、私信)MID,最多不超过20个 * @param type 获取类型,1:微博、2:评论、3:私信,默认为1。可为几下几种: * <li> {@link #TYPE_STATUSES} * <li> {@link #TYPE_COMMENTS} * <li> {@link #TYPE_MESSAGE} * @param inbox 仅对私信有效,当MID类型为私信时用此参数,0:发件箱、1:收件箱,默认为0 * @param isBase62 MID是否是base62编码,0:否、1:是,默认为0 * @param listener 异步请求回调接口 */ public void queryID(String[] mids, int type, boolean inbox, boolean isBase62, RequestListener listener) { WeiboParameters params = new WeiboParameters(mAppKey); if (mids != null) { if (1 == mids.length) { params.put("mid", mids[0]); } else { params.put("is_batch", 1); StringBuilder strb = new StringBuilder(); for (String mid : mids) { strb.append(mid).append(","); } strb.deleteCharAt(strb.length() - 1); params.put("mid", strb.toString()); } } params.put("type", type); params.put("inbox", inbox ? 1 : 0); params.put("isBase62", isBase62 ? 1 : 0); requestAsync(SERVER_URL_PRIX + "/queryid.json", params, HTTPMETHOD_GET, listener); } /** * 按天返回热门微博转发榜的微博列表。 * * @param count 返回的记录条数,最大不超过50,默认为20 * @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false * @param listener 异步请求回调接口 */ public void hotRepostDaily(int count, boolean base_app, RequestListener listener) { WeiboParameters params = buildHotParams(count, base_app); requestAsync(SERVER_URL_PRIX + "/hot/repost_daily.json", params, HTTPMETHOD_GET, listener); } /** * 按周返回热门微博转发榜的微博列表。 * * @param count 返回的记录条数,最大不超过50,默认为20 * @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false * @param listener 异步请求回调接口 */ public void hotRepostWeekly(int count, boolean base_app, RequestListener listener) { WeiboParameters params = buildHotParams(count, base_app); requestAsync(SERVER_URL_PRIX + "/hot/repost_weekly.json", params, HTTPMETHOD_GET, listener); } /** * 按天返回热门微博评论榜的微博列表。 * * @param count 返回的记录条数,最大不超过50,默认为20 * @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false * @param listener 异步请求回调接口 */ public void hotCommentsDaily(int count, boolean base_app, RequestListener listener) { WeiboParameters params = buildHotParams(count, base_app); requestAsync(SERVER_URL_PRIX + "/hot/comments_daily.json", params, HTTPMETHOD_GET, listener); } /** * 按周返回热门微博评论榜的微博列表。 * * @param count 返回的记录条数,最大不超过50,默认为20 * @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false * @param listener 异步请求回调接口 */ public void hotCommentsWeekly(int count, boolean base_app, RequestListener listener) { WeiboParameters params = buildHotParams(count, base_app); requestAsync(SERVER_URL_PRIX + "/hot/comments_weekly.json", params, HTTPMETHOD_GET, listener); } /** * 批量获取指定微博的转发数评论数。 * * @param ids 需要获取数据的微博ID,最多不超过100个 * @param listener 异步请求回调接口 */ public void count(String[] ids, RequestListener listener) { WeiboParameters params = new WeiboParameters(mAppKey); StringBuilder strb = new StringBuilder(); for (String id : ids) { strb.append(id).append(","); } strb.deleteCharAt(strb.length() - 1); params.put("ids", strb.toString()); requestAsync(SERVER_URL_PRIX + "/count.json", params, HTTPMETHOD_GET, listener); } /** * 转发一条微博。 * * @param id 要转发的微博ID * @param status 添加的转发文本,内容不超过140个汉字,不填则默认为“转发微博” * @param commentType 是否在转发的同时发表评论,0:否、1:评论给当前微博、2:评论给原微博、3:都评论,默认为0 * <li> {@link #COMMENTS_NONE} * <li> {@link #COMMENTS_CUR_STATUSES} * <li> {@link #COMMENTS_RIGAL_STATUSES} * <li> {@link #COMMENTS_BOTH} * @param listener 异步请求回调接口 */ public void repost(long id, String status, int commentType, RequestListener listener) { WeiboParameters params = new WeiboParameters(mAppKey); params.put("id", id); params.put("status", status); params.put("is_comment", commentType); requestAsync(SERVER_URL_PRIX + "/repost.json", params, HTTPMETHOD_POST, listener); } /** * 根据微博ID删除指定微博。 * * @param id 需要删除的微博ID * @param listener 异步请求回调接口 */ public void destroy(long id, RequestListener listener) { WeiboParameters params = new WeiboParameters(mAppKey); params.put("id", id); requestAsync(SERVER_URL_PRIX + "/destroy.json", params, HTTPMETHOD_POST, listener); } /** * 发布一条新微博(连续两次发布的微博不可以重复)。 * * @param content 要发布的微博文本内容,内容不超过140个汉字 * @param lat 纬度,有效范围:-90.0到+90.0,+表示北纬,默认为0.0 * @param lon 经度,有效范围:-180.0到+180.0,+表示东经,默认为0.0 * @param listener 异步请求回调接口 */ public void update(String content, String lat, String lon, RequestListener listener) { WeiboParameters params = buildUpdateParams(content, lat, lon); requestAsync(SERVER_URL_PRIX + "/update.json", params, HTTPMETHOD_POST, listener); } /** * 上传图片并发布一条新微博,此方法会处理urlencode。 * * @param content 要发布的微博文本内容,内容不超过140个汉字 * @param bitmap 要上传的图片,仅支持JPEG、GIF、PNG格式,图片大小小于5M * @param lat 纬度,有效范围:-90.0到+90.0,+表示北纬,默认为0.0 * @param lon 经度,有效范围:-180.0到+180.0,+表示东经,默认为0.0 * @param listener 异步请求回调接口 */ public void upload(String content, Bitmap bitmap, String lat, String lon, RequestListener listener) { WeiboParameters params = buildUpdateParams(content, lat, lon); params.put("pic", bitmap); requestAsync(SERVER_URL_PRIX + "/upload.json", params, HTTPMETHOD_POST, listener); } /** * 指定一个图片URL地址抓取后上传并同时发布一条新微博,此方法会处理URLencode。 * * @param status 要发布的微博文本内容,内容不超过140个汉字 * @param imageUrl 图片的URL地址,必须以http开头 * @param pic_id 已经上传的图片pid,多个时使用英文半角逗号符分隔,最多不超过九张。 imageUrl 和 pic_id必选一个,两个参数都存在时,取picid参数的值为准 * @param lat 纬度,有效范围:-90.0到+90.0,+表示北纬,默认为0.0 * @param lon 经度,有效范围:-180.0到+180.0,+表示东经,默认为0.0 * @param listener 异步请求回调接口 */ public void uploadUrlText(String status, String imageUrl, String pic_id, String lat, String lon, RequestListener listener) { WeiboParameters params = buildUpdateParams(status, lat, lon); params.put("url", imageUrl); params.put("pic_id", pic_id); requestAsync(SERVER_URL_PRIX + "/upload_url_text.json", params, HTTPMETHOD_POST, listener); } /** * 获取微博官方表情的详细信息。 * * @param type 表情类别,表情类别,face:普通表情、ani:魔法表情、cartoon:动漫表情,默认为face。可为以下几种: * <li> {@link #EMOTION_TYPE_FACE} * <li> {@link #EMOTION_TYPE_ANI} * <li> {@link #EMOTION_TYPE_CARTOON} * @param language 语言类别,cnname:、twname:,默认为cnname。 * <li> {@link #LANGUAGE_CNNAME} * <li> {@link #LANGUAGE_TWNAME} * @param listener 异步请求回调接口 */ public void emotions(String type, String language, RequestListener listener) { WeiboParameters params = new WeiboParameters(mAppKey); params.put("type", type); params.put("language", language); requestAsync(API_SERVER + "/emotions.json", params, HTTPMETHOD_GET, listener); } // 组装TimeLines的参数 private WeiboParameters buildTimeLineBase(long since_id, long max_id, int count, int page) { WeiboParameters params = new WeiboParameters(mAppKey); params.put("since_id", since_id); params.put("max_id", max_id); params.put("count", count); params.put("page", page); return params; } private WeiboParameters buildTimeLineWithApp(long since_id, long max_id, int count, int page, boolean base_app, int featureType) { WeiboParameters params = buildTimeLineBase(since_id, max_id, count, page); params.put("feature", featureType); params.put("base_app", base_app ? 1 : 0); return params; } private WeiboParameters buildTimeLineWithAppTrim(long since_id, long max_id, int count, int page, boolean base_app, boolean trim_user, int featureType) { WeiboParameters params = buildTimeLineWithApp(since_id, max_id, count, page, base_app, featureType); params.put("trim_user", trim_user ? 1 : 0); return params; } private WeiboParameters buildHotParams(int count, boolean base_app) { WeiboParameters params = new WeiboParameters(mAppKey); params.put("count", count); params.put("base_app", base_app ? 1 : 0); return params; } // 组装微博请求参数 private WeiboParameters buildUpdateParams(String content, String lat, String lon) { WeiboParameters params = new WeiboParameters(mAppKey); params.put("status", content); if (!TextUtils.isEmpty(lon)) { params.put("long", lon); } if (!TextUtils.isEmpty(lat)) { params.put("lat", lat); } return params; } }