package org.aisen.weibo.sina.support.sdk; import android.text.TextUtils; import com.alibaba.fastjson.JSON; import org.aisen.android.common.setting.Setting; import org.aisen.android.common.utils.Logger; import org.aisen.android.network.biz.ABizLogic; import org.aisen.android.network.http.HttpConfig; import org.aisen.android.network.http.IHttpUtility; import org.aisen.android.network.http.Params; import org.aisen.android.network.task.TaskException; import org.aisen.weibo.sina.support.bean.JokeBeans; import org.aisen.weibo.sina.support.bean.LikeResultBean; import org.aisen.weibo.sina.support.bean.PictureSize; import org.aisen.weibo.sina.support.bean.WallpaperBeans; import org.aisen.weibo.sina.support.cache.JokesCacheUtility; import org.aisen.weibo.sina.support.cache.WallpaperCacheUtility; import org.jsoup.Connection; import org.jsoup.Jsoup; import java.util.HashMap; import java.util.Map; public class SDK extends ABizLogic { private SDK() { } private SDK(CacheMode mode) { super((mode)); } public static SDK newInstance() { return new SDK(); } public static SDK newInstance(CacheMode cacheMode) { return new SDK(cacheMode); } @Override protected HttpConfig configHttpConfig() { HttpConfig httpConfig = new HttpConfig(); return httpConfig; } @Override protected IHttpUtility configHttpUtility() { return super.configHttpUtility(); } /** * 获取图片大小 * * @param url * @return * @throws TaskException */ public PictureSize getPictureSize(String url) throws TaskException { Setting action = newSetting("getPictureSize", "", "读取图片的尺寸"); action.getExtras().put(HTTP_UTILITY, newSettingExtra(HTTP_UTILITY, PictureSizeHttpUtility.class.getName(), "获取图片尺寸的HttpUtility")); Params params = new Params(); params.addParameter("path", url); return doGet(action, params, PictureSize.class); } /** * 点赞 * * @param statusId * @param like * @param cookie * @return * @throws TaskException */ public LikeResultBean doLike(String statusId, boolean like, String cookie) throws TaskException { try { String url = like ? "http://m.weibo.cn/attitudesDeal/add" : "http://m.weibo.cn/attitudesDeal/delete"; Map<String, String> cookieMap = new HashMap<String, String>(); String[] cookieValues = cookie.split(";"); for (String cookieValue : cookieValues) { String key = cookieValue.split("=")[0]; String value = cookieValue.split("=")[1]; cookieMap.put(key, value); } // Logger.d(WeiboClientActivity.TAG, cookieMap); Connection connection = Jsoup.connect(url); connection.userAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:33.0) Gecko/20100101 Firefox/33.0") .referrer("http://m.weibo.cn/") .cookies(cookieMap) .data("id", statusId) .method(Connection.Method.POST); if (like) connection.data("attitude", "heart"); String body = connection.execute().body(); if (!TextUtils.isEmpty(body)) { Logger.d(TAG, body); if (body.indexOf("http://passport.weibo.cn/sso/crossdomain") != -1) throw new TaskException("-100", "未登录"); else if (body.indexOf("<html") != -1) throw new TaskException("-100", "未登录"); LikeResultBean likeBean = JSON.parseObject(body, LikeResultBean.class); if (likeBean.getOk() == 1) { return likeBean; } else if (likeBean.getOk() == -100) { throw new TaskException("-100", "未登录"); } else { throw new TaskException("", likeBean.getMsg()); } } } catch (Exception e) { if (e instanceof TaskException) throw (TaskException) e; e.printStackTrace(); } throw new TaskException(TaskException.TaskError.timeout.toString()); } /** * 获取笑料百科列表 * * @param id * @param direction * @param limit * @return * @throws TaskException */ public JokeBeans getJokes(long id, String direction, int limit, int type) throws TaskException { Setting action = newSetting("getJokes", "jokes", "获取笑话列表"); action.getExtras().put(BASE_URL, newSettingExtra(BASE_URL, "http://stream-cn-api.tclclouds.com/api/", "")); Params params = new Params(); if ("up".equalsIgnoreCase(direction) || "down".equalsIgnoreCase(direction)) { } else { direction = "up"; id = 0; } params.addParameter("id", String.valueOf(id)); params.addParameter("direction", String.valueOf(direction)); params.addParameter("limit", String.valueOf(limit)); params.addParameter("mode",String.valueOf(type)); // 配置缓存器 action.getExtras().put(CACHE_UTILITY, newSettingExtra(CACHE_UTILITY, JokesCacheUtility.class.getName(), "")); return doGet(action, params, JokeBeans.class); } /** * 获取壁纸列表 * * @param page * @return * @throws TaskException */ public WallpaperBeans getWallpaper(int page) throws TaskException { Setting action = newSetting("getWallpaper", "wallpaper/newestorhot/content", "获取最新壁纸列表"); action.getExtras().put(BASE_URL, newSettingExtra(BASE_URL, "http://apps.tclclouds.com/api/", "")); Params params = new Params(); params.addParameter("flag", "2");// 1:最新;2:最热) params.addParameter("page", String.valueOf(page)); params.addParameter("per_page", "30"); params.addParameter("encoder", "debug"); // 配置缓存器 action.getExtras().put(CACHE_UTILITY, newSettingExtra(CACHE_UTILITY, WallpaperCacheUtility.class.getName(), "")); WallpaperBeans beans = doGet(action, params, WallpaperBeans.class); if (beans.getItem() == null || beans.getItem().getWallpaperList() == null) { throw new TaskException(TaskException.TaskError.resultIllegal.toString()); } return beans; } }