예제 #1
0
  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();
  }
예제 #2
0
 /**
  * 根据评论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);
 }
예제 #3
0
 /**
  * 发布一条新微博(连续两次发布的微博不可以重复)
  *
  * @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);
 }
예제 #4
0
 /**
  * 对一条微博进行评论
  *
  * @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);
 }
예제 #5
0
  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;
  }
예제 #6
0
  /**
   * 获取当前登录用户及其所关注用户的最新微博的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);
  }
예제 #7
0
 /**
  * 指定一个图片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);
 }
예제 #8
0
  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();
          }
        });
  }
예제 #9
0
 /**
  * 执行请求
  *
  * @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);
 }
예제 #10
0
  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);
  }
예제 #11
0
 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();
 }
예제 #12
0
 /** 根据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);
 }
예제 #13
0
 /**
  * 根据微博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);
 }
예제 #14
0
 /**
  * 获取当前登录用户所发出的评论列表
  *
  * @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);
 }
예제 #15
0
 /**
  * 获取当前登录用户的最新评论包括接收到的与发出的
  *
  * @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);
 }
예제 #16
0
 /**
  * 回复一条评论
  *
  * @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);
 }
예제 #17
0
 /**
  * 获取所有的学校列表(参数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);
 }
예제 #18
0
 /**
  * 删除一条评论
  *
  * @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);
 }
예제 #19
0
 /**
  * 验证昵称是否可用
  *
  * @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);
 }
예제 #20
0
 /**
  * 根据用户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);
 }
예제 #21
0
  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;
  }
예제 #22
0
 private static boolean isBundleEmpty(WeiboParameters bundle) {
   if (bundle == null || bundle.size() == 0) {
     return true;
   }
   return false;
 }