public static String encodeUrl(WeiboParameters parameters) { if (parameters == null) { return ""; } StringBuilder sb = new StringBuilder(); boolean first = true; for (int loc = 0; loc < parameters.size(); loc++) { if (first) { first = false; } else { sb.append("&"); } String _key = parameters.getKey(loc); String _value = parameters.getValue(_key); if (_value == null) { Log.i("encodeUrl", "key:" + _key + " 's value is null"); } else { sb.append( URLEncoder.encode(parameters.getKey(loc)) + "=" + URLEncoder.encode(parameters.getValue(loc))); } } return sb.toString(); }
/** * 根据评论ID批量删除评论 * * @param ids 需要删除的评论ID数组,最多20个。 * @param listener */ public void destroyBatch(long[] ids, RequestListener listener) { WeiboParameters params = new WeiboParameters(); StringBuilder strb = new StringBuilder(); for (long cid : ids) { strb.append(String.valueOf(cid)).append(","); } strb.deleteCharAt(strb.length() - 1); params.add("ids", strb.toString()); request(SERVER_URL_PRIX + "/sdestroy_batch.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 = new WeiboParameters(); params.add("status", content); if (!TextUtils.isEmpty(lon)) { params.add("long", lon); } if (!TextUtils.isEmpty(lat)) { params.add("lat", lat); } request(URL_STATUSES_UPDATE, params, HTTPMETHOD_POST, listener); }
/** * 对一条微博进行评论 * * @param comment 评论内容,内容不超过140个汉字。 * @param id 需要评论的微博ID。 * @param comment_ori 当评论转发微博时,是否评论给原微博 * @param listener */ public void create(String comment, long id, boolean comment_ori, RequestListener listener) { WeiboParameters params = new WeiboParameters(); params.add("comment", comment); params.add("id", id); if (comment_ori) { params.add("comment_ori", 0); } else { params.add("comment_ori", 1); } request(SERVER_URL_PRIX + "/create.json", params, HTTPMETHOD_POST, listener); }
protected String requestSync( final String url, final WeiboParameters params, final String httpMethod) throws WeiboException { params.add("access_token", mAccessToken); System.out.println("requestSync mAccessToken = " + mAccessToken); Log.d("WeiboAPI", "requestSync request " + url); String resp = HttpManager.openUrl(url, httpMethod, params, params.getValue("pic")); Log.d("WeiboAPI", "requestSync request " + resp); return resp; }
/** * 获取当前登录用户及其所关注用户的最新微博的ID * * @param page_size 单页返回的记录条数,默认为50。 * @param now_page 返回结果的页码,默认为1。 * @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false。 * @param feature 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0。 * @param listener */ public void friendsTimeline( int now_page, int page_size, int order_type, RequestListener listener) { WeiboParameters params = new WeiboParameters(); System.out.println( "______________________hotWord_________friendsTimeline_______________________"); params.add("token", super.getToken()); params.add("nowPage", now_page); params.add("pageSize", page_size); params.add("orderType", order_type); request(SERVER_URL_PRIX, params, HTTPMETHOD_GET, listener); }
/** * 指定一个图片URL地址抓取后上传并同时发布一条新微博 * * @param content 要发布的微博文本内容,内容不超过140个汉字 * @param url 图片的URL地址,必须以http开头。 * @param lat 纬度,有效范围:-90.0到+90.0,+表示北纬,默认为0.0。 * @param lon 经度,有效范围:-180.0到+180.0,+表示东经,默认为0.0。 * @param listener */ public void uploadUrlText( String content, String url, String lat, String lon, RequestListener listener) { WeiboParameters params = new WeiboParameters(); params.add("status", content); params.add("url", url); if (!TextUtils.isEmpty(lon)) { params.add("long", lon); } if (!TextUtils.isEmpty(lat)) { params.add("lat", lat); } request(URL_STATUSES_UPLOAD_URL_TEXT, params, HTTPMETHOD_POST, listener); }
public static void authorize(Context context) { if (accessToken != null) return; if (!Util.isEmpty(Login.sinaWeiboToken) && !Util.isEmpty(Login.sinaExpiresIN)) { access_token = Login.sinaWeiboToken; expires_in = Login.sinaExpiresIN; accessToken = new Oauth2AccessToken(access_token, expires_in); if (!accessToken.isSessionValid()) { accessToken = null; } } WeiboParameters parameters = new WeiboParameters(); parameters.add("forcelogin", "true"); com.weibo.sdk.android.util.Utility.isWifi(context); weibo.startDialog( context, parameters, new WeiboAuthListener() { // weibo.authorize(context, new WeiboAuthListener() { @Override public void onComplete(Bundle bundle) { access_token = bundle.getString("access_token"); expires_in = bundle.getString("expires_in"); accessToken = new Oauth2AccessToken(access_token, expires_in); try { SendToken(); } catch (IOException e) { e.printStackTrace(); } } @Override public void onWeiboException(WeiboException e) { clearToken(); } @Override public void onError(WeiboDialogError weiboDialogError) { clearToken(); } @Override public void onCancel() { clearToken(); } }); }
/** * 执行请求 * * @param url * @param params * @param httpMethod * @param listener */ private void request( final String url, final WeiboParameters params, final String httpMethod, RequestListener listener) { params.add("access_token", accessToken); AsyncWeiboRunner.request(url, params, httpMethod, listener); }
protected void requestAsync( final String url, final WeiboParameters params, final String httpMethod, RequestListener listener) { params.add("access_token", mAccessToken); System.out.println("requestAsync mAccessToken = " + mAccessToken); AsyncWeiboRunner.request(url, params, httpMethod, listener); }
public static String encodeParameters(WeiboParameters httpParams) { if (null == httpParams || isBundleEmpty(httpParams)) { return ""; } StringBuilder buf = new StringBuilder(); int j = 0; for (int loc = 0; loc < httpParams.size(); loc++) { String key = httpParams.getKey(loc); if (j != 0) { buf.append("&"); } try { buf.append(URLEncoder.encode(key, "UTF-8")) .append("=") .append(URLEncoder.encode(httpParams.getValue(key), "UTF-8")); } catch (java.io.UnsupportedEncodingException neverHappen) { } j++; } return buf.toString(); }
/** 根据code获取AccessToken */ public void getAccessTokenByCode(String code, RequestListener listener) { WeiboParameters params = new WeiboParameters(); params.add(Constants.SINA_CLIENT_ID, Constants.SINA_APP_KEY); params.add(Constants.SINA_CLIENT_SECRET, Constants.SINA_APP_SECRET); params.add(Constants.SINA_GRANT_TYPE, Constants.SINA_GRANT_TYPE_VALUE); params.add(Constants.SINA_CODE, code); params.add(Constants.SINA_REDIRECT_URI, Constants.SINA_REDIRECT_URL); AsyncWeiboRunner.request(URL_ACCESS_TOKEN, params, HTTPMETHOD_POST, 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 filter_by_author 作者筛选类型,0:全部、1:我关注的人、2:陌生人,默认为0。 * @param listener */ public void show( long id, long since_id, long max_id, int count, int page, AUTHOR_FILTER filter_by_author, RequestListener listener) { WeiboParameters params = new WeiboParameters(); params.add("id", id); params.add("since_id", since_id); params.add("max_id", max_id); params.add("count", count); params.add("page", page); params.add("filter_by_author", filter_by_author.ordinal()); request(SERVER_URL_PRIX + "/show.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 filter_by_source 来源筛选类型,0:全部、1:来自微博的评论、2:来自微群的评论,默认为0。 * @param listener */ public void byME( long since_id, long max_id, int count, int page, SRC_FILTER filter_by_source, RequestListener listener) { WeiboParameters params = new WeiboParameters(); params.add("since_id", since_id); params.add("max_id", max_id); params.add("count", count); params.add("page", page); params.add("filter_by_source", filter_by_source.ordinal()); request(SERVER_URL_PRIX + "/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 trim_user 返回值中user字段开关,false:返回完整user字段、true:user字段仅返回user_id,默认为false。 * @param listener */ public void timeline( long since_id, long max_id, int count, int page, boolean trim_user, RequestListener listener) { WeiboParameters params = new WeiboParameters(); params.add("since_id", since_id); params.add("max_id", max_id); params.add("count", count); params.add("page", page); if (trim_user) { params.add("trim_user", 1); } else { params.add("trim_user", 0); } request(SERVER_URL_PRIX + "/timeline.json", params, HTTPMETHOD_GET, listener); }
/** * 回复一条评论 * * @param cid 需要回复的评论ID。 * @param id 需要评论的微博ID。 * @param comment 回复评论内容,内容不超过140个汉字。 * @param without_mention 回复中是否自动加入“回复@用户名”,true:是、false:否,默认为false。 * @param comment_ori 当评论转发微博时,是否评论给原微博,false:否、true:是,默认为false。 * @param listener */ public void reply( long cid, long id, String comment, boolean without_mention, boolean comment_ori, RequestListener listener) { WeiboParameters params = new WeiboParameters(); params.add("cid", cid); params.add("id", id); params.add("comment", comment); if (without_mention) { params.add("without_mention", 1); } else { params.add("without_mention", 0); } if (comment_ori) { params.add("comment_ori", 1); } else { params.add("comment_ori", 0); } request(SERVER_URL_PRIX + "/reply.json", params, HTTPMETHOD_POST, listener); }
/** * 获取所有的学校列表(参数keyword与capital二者必选其一,且只能选其一 按首字母capital查询时,必须提供province参数) * * @param province 省份范围,省份ID。 * @param city 城市范围,城市ID * @param area 区域范围,区ID。 * @param type 学校类型,1:大学、2:高中、3:中专技校、4:初中、5:小学,默认为1。 * @param capital 学校首字母,默认为A。 * @param keyword 学校名称关键字 * @param count 返回的记录条数,默认为10。 * @param listener */ public void schoolList( int province, int city, int area, SCHOOL_TYPE type, CAPITAL capital, String keyword, int count, RequestListener listener) { WeiboParameters params = new WeiboParameters(); params.add("province", province); params.add("city", city); params.add("area", area); params.add("type", type.ordinal() + 1); if (!TextUtils.isEmpty(capital.name())) { params.add("capital", capital.name()); } else if (!TextUtils.isEmpty(keyword)) { params.add("keyword", keyword); } params.add("count", count); request(SERVER_URL_PRIX + "/profile/school_list.json", params, HTTPMETHOD_GET, listener); }
/** * 删除一条评论 * * @param cid 要删除的评论ID,只能删除登录用户自己发布的评论。 * @param listener */ public void destroy(long cid, RequestListener listener) { WeiboParameters params = new WeiboParameters(); params.add("cid", cid); request(SERVER_URL_PRIX + "/destroy.json", params, HTTPMETHOD_POST, listener); }
/** * 验证昵称是否可用 * * @param nickname 需要验证的昵称。4-20个字符,支持中英文、数字、"_"或减号。 * @param listener */ public void suggestions(String nickname, RequestListener listener) { WeiboParameters params = new WeiboParameters(); params.add("nickname", nickname); request(SERVER_URL_PRIX + "/verify_nickname.json", params, HTTPMETHOD_GET, listener); }
/** * 根据用户ID获取用户信息 * * @param uid 需要查询的用户ID。 * @param listener */ public void show(long uid, RequestListener listener) { WeiboParameters params = new WeiboParameters(); params.add("uid", uid); request(URL_USERS_SHOW, params, HTTPMETHOD_GET, listener); }
public static String WeiboStatusUpload( Context context, final String content, final String pic, final RequestListener requestListener) { weiboUpLoadResult = "success"; if (accessToken == null) { WeiboParameters parameters = new WeiboParameters(); parameters.add("forcelogin", "true"); com.weibo.sdk.android.util.Utility.isWifi(context); weibo.startDialog( context, parameters, new WeiboAuthListener() { // weibo.authorize(context, new WeiboAuthListener() { @Override public void onComplete(Bundle bundle) { access_token = bundle.getString("access_token"); expires_in = bundle.getString("expires_in"); accessToken = new Oauth2AccessToken(access_token, expires_in); try { SendToken(); } catch (IOException e) { e.printStackTrace(); } StatusesAPI statusesAPI = new StatusesAPI(accessToken); if (requestListener != null) { statusesAPI.upload(content, pic, null, null, requestListener); } else { statusesAPI.upload( content, pic, null, null, new RequestListener() { @Override public void onComplete(String s) { weiboUpLoadResult = s; weiboUpLoadResult = "success"; // Toast.makeText(Record_Journal.this, "微博发布成功", Toast.LENGTH_SHORT).show(); } @Override public void onIOException(IOException e) { weiboUpLoadResult = e.getMessage(); weiboUpLoadResult = "fail"; e.printStackTrace(); // Toast.makeText(Record_Journal.this, "微博发布失败:"+e.getMessage(), // Toast.LENGTH_SHORT).show(); } @Override public void onError(WeiboException e) { weiboUpLoadResult = e.getMessage(); weiboUpLoadResult = "fail"; e.printStackTrace(); // Toast.makeText(Record_Journal.this, "微博发布失败:"+e.getMessage(), // Toast.LENGTH_SHORT).show(); } }); } } @Override public void onWeiboException(WeiboException e) { weiboUpLoadResult = e.getMessage(); weiboUpLoadResult = "fail"; e.printStackTrace(); clearToken(); } @Override public void onError(WeiboDialogError weiboDialogError) { weiboUpLoadResult = weiboDialogError.getMessage(); weiboUpLoadResult = "fail"; weiboDialogError.printStackTrace(); clearToken(); } @Override public void onCancel() { clearToken(); } }); } else { StatusesAPI statusesAPI = new StatusesAPI(accessToken); if (requestListener != null) { statusesAPI.upload(content, pic, null, null, requestListener); } else { statusesAPI.upload( content, pic, null, null, new RequestListener() { @Override public void onComplete(String s) { weiboUpLoadResult = s; weiboUpLoadResult = "success"; // Toast.makeText(Record_Journal.this, "微博发布成功", Toast.LENGTH_SHORT).show(); } @Override public void onIOException(IOException e) { weiboUpLoadResult = e.getMessage(); weiboUpLoadResult = "fail"; e.printStackTrace(); // Toast.makeText(Record_Journal.this, "微博发布失败:"+e.getMessage(), // Toast.LENGTH_SHORT).show(); } @Override public void onError(WeiboException e) { weiboUpLoadResult = e.getMessage(); weiboUpLoadResult = "fail"; e.printStackTrace(); // Toast.makeText(Record_Journal.this, "微博发布失败:"+e.getMessage(), // Toast.LENGTH_SHORT).show(); } }); } } return weiboUpLoadResult; }
private static boolean isBundleEmpty(WeiboParameters bundle) { if (bundle == null || bundle.size() == 0) { return true; } return false; }