private static void init(OAuthV2 oAuth) {

    oAuth.setClientId("801115505");
    oAuth.setClientSecret("be1dd1410434a9f7d5a2586bab7a6829");
    oAuth.setRedirectUri("http://www.tencent.com/zh-cn/index.shtml");
    // oAuth.setAccessToken("02204e5e59c2d22b73fb9b688e9f0c02");
    // oAuth.setOpenid("42A2ACA51C28782E854A50C5FA14160A");
    // oAuth.setOpenkey("ECBBC3B17F4190C8824DB652436E5DFA");
    // oAuth.setExpiresIn("604800");
  }
  public static void main(String[] args) {

    /*
     * 初始化 OAuth ,设置 app key 和 对应的 secret 重复测试时,可直接对access
     * token等鉴权参数赋值,以便省略授权过程(完成一次正常的授权过程即可手动设置)
     */
    init(oAuth);

    /*
     * -----------------------------------------授权流程
     * begin--------------------------------------------------
     */

    // 自定制http连接管理器
    QHttpClient qHttpClient = new QHttpClient(2, 2, 5000, 5000, null, null);
    OAuthV2Client.setQHttpClient(qHttpClient);

    // 调用外部浏览器,请求用户授权,并读入授权码等参数
    openBrowser(oAuth);

    // 检查是否正确取得授权码
    if (oAuth.getStatus() == 2) {
      System.out.println("Get Authorization Code failed!");
      return;
    }

    // 换取access token
    oAuth.setGrantType("authorize_code");
    try {
      OAuthV2Client.accessToken(oAuth);
    } catch (Exception e1) {
      e1.printStackTrace();
    }

    // 检查是否正确取得access token
    if (oAuth.getStatus() == 3) {
      System.out.println("Get Access Token failed!");
      return;
    }

    qHttpClient.shutdownConnection();
    /*
     * -----------------------------------------授权流程
     * end--------------------------------------------------
     */

    // 执行测试列表
    try {
      new TestOAuthV2AuthorizeCodeGrantAndAPI().testList();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  private void testList() throws Exception {

    System.out.println("Response from server:");
    /*
     * -----------------------------------------简化测试参数
     * begin-----------------------------------------------
     * 下列每个参数的具体含义和取值,请参看其所在函数的doc文档
     */
    String response;
    String format = "json";
    String clientip = "127.0.0.1";
    String jing = "";
    String wei = "";
    String syncflag = "";
    String pageflag = "0";
    String pagetime = "0";
    String reqnum = "5";
    String lastid = "'0";
    String contenttype = "0";
    String content = "2"; // 注意:因为后台会对微博内容进行判重,所以在重复测试时加上变换部分++++++++
    String twitterid = "0";
    String fopenids = "";
    String fopenid = "";
    String reid = null;
    String ids = null;
    String id = null;
    String names = "api_weibo,t-qq-com,vvtest1";
    String name = "t-qq-com";
    String flag = "2";
    String keyword = "微博";
    String pagesize = "5";
    String page = "0";
    String searchtype = "0";
    String msgtype = "0";
    String sorttype = "0";
    String type = "0";
    String op = "0";
    String starttime = "";
    String endtime = "";
    String province = "";
    String city = "";
    String longitue = "";
    String latitude = "";
    String radius = "";
    String startindex = "0";
    String mode = "0";
    String install = "0";
    String picpath = System.getProperty("user.dir") + "\\src\\main\\resources\\logo_QWeibo.jpg";
    /*
     * -----------------------------------------简化测试参数
     * end-----------------------------------------------
     */

    /*
     * ---------------------------------------- 微博相关测试例
     * begin--------------------------------------------- 注意:
     * 微博服务器对发微博的频率有限制,如果不加 sleep() 直接执行下列多条发微博操作, 可能会出现 ret=4 errcode=10
     * 的错误码,意思是:发表太快,被频率限制
     */
    TAPI tAPI = new TAPI(oAuth.getOauthVersion()); // 根据oAuth配置对应的连接管理器

    // 取得返回结果
    response = tAPI.add(oAuth, format, "测试发表文字微博" + content, clientip, jing, wei, syncflag);
    // json数据使用
    // response的结果可能是这样,{"data":{"id":"90221131024999","time":1333002978},"errcode":0,"msg":"ok","ret":0}
    // 下面的代码将取出 id 的对应值,并赋予 reid
    System.out.println("response = " + response);
    JSONObject responseJsonObject;
    JSONObject dataJsonObject;
    responseJsonObject = JSONObject.fromObject(response);
    dataJsonObject = (JSONObject) responseJsonObject.get("data");
    id = ids = reid = dataJsonObject.get("id").toString(); // 对后面用到的 reid 赋值
    System.out.println("reid = " + reid);
    try {
      Thread.sleep(5000);
    } catch (InterruptedException ie) {
    }

    response =
        tAPI.addPic(
            oAuth,
            format,
            "发表一条带网络图片的微博" + content,
            clientip,
            jing,
            wei,
            "http://t3.qpic.cn/mblogpic/d26d1168b2c6c25db192/460",
            syncflag);
    // 取出返回的 id
    responseJsonObject = JSONObject.fromObject(response);
    dataJsonObject = (JSONObject) responseJsonObject.get("data");
    ids += "," + dataJsonObject.get("id").toString(); // 对后面用到的 ids 赋值
    System.out.println("ids = " + ids);
    try {
      Thread.sleep(5000);
    } catch (InterruptedException ie) {
    }

    tAPI.addPic(oAuth, format, "发表一条带本地图片的微博" + content, clientip, jing, wei, picpath, syncflag);
    try {
      Thread.sleep(5000);
    } catch (InterruptedException ie) {
    }

    // 更多微博相关API测试
    tAPI.reAdd(oAuth, format, "转播一条微博" + content, clientip, jing, wei, reid);
    try {
      Thread.sleep(5000);
    } catch (InterruptedException ie) {
    }

    tAPI.reCount(oAuth, format, ids, flag);
    tAPI.show(oAuth, format, id);
    tAPI.comment(oAuth, format, "点评一条微博" + content, clientip, jing, wei, reid);
    try {
      Thread.sleep(5000);
    } catch (InterruptedException ie) {
    }

    tAPI.addVideo(
        oAuth,
        format,
        "发表视频微博" + content,
        clientip,
        jing,
        wei,
        "http://www.tudou.com/programs/view/yx41TA6rQfE/?resourceId=0_03_05_07",
        syncflag);
    try {
      Thread.sleep(5000);
    } catch (InterruptedException ie) {
    }

    tAPI.reList(oAuth, format, flag, id, pageflag, pagetime, reqnum, twitterid);
    tAPI.del(oAuth, format, id);

    tAPI.shutdownConnection(); // 关闭连接管理器

    /*
     * ------------------------------------------ 微博相关测试例
     * end--------------------------------------------
     */

    /*
     * -------------------------------------------关系链相关测试例
     * begin-----------------------------------------
     */
    FriendsAPI friendsAPI = new FriendsAPI(oAuth.getOauthVersion());

    name = "vvtest1";
    friendsAPI.add(oAuth, format, name, fopenids);
    friendsAPI.del(oAuth, format, name, fopenid); // 该操作会删除您收听的人,请慎重使用
    name = "t-qq-com";
    friendsAPI.check(oAuth, format, names, fopenids, flag);
    friendsAPI.fanslist(oAuth, format, reqnum, startindex, mode, install);
    friendsAPI.fanslistS(oAuth, format, reqnum, startindex, install);
    friendsAPI.idollist(oAuth, format, reqnum, startindex, install);
    friendsAPI.userFanslist(oAuth, format, reqnum, startindex, name, fopenid, mode, install);
    friendsAPI.userIdollist(oAuth, format, reqnum, startindex, name, fopenid, install);

    friendsAPI.shutdownConnection();
    /*
     * -------------------------------------------关系链相关测试例 end
     * --------------------------------------------
     */

    /*
     * ----------------------------------------- 数据更新相关测试例
     * begin-------------------------------------------
     */
    InfoAPI infoAPI = new InfoAPI(oAuth.getOauthVersion());

    infoAPI.update(oAuth, format, op, type);

    infoAPI.shutdownConnection();
    /*
     * ------------------------------------------- 数据更新相关测试例
     * end-------------------------------------------
     */

    /*
     * -------------------------------------------- 账户相关测试例
     * begin---------------------------------------------
     */
    UserAPI userAPI = new UserAPI(oAuth.getOauthVersion());

    userAPI.info(oAuth, format);
    userAPI.infos(oAuth, format, names, fopenid);
    userAPI.otherInfo(oAuth, format, name, fopenid);

    userAPI.shutdownConnection();
    /*
     * --------------------------------------------- 账户相关测试例
     * end-----------------------------------------------
     */

    /*
     * -------------------------------------------- 搜索相关测试例
     * begin-----------------------------------------------
     */
    SearchAPI searchAPI = new SearchAPI(oAuth.getOauthVersion());

    searchAPI.t(
        oAuth,
        format,
        keyword,
        pagesize,
        page,
        contenttype,
        sorttype,
        msgtype,
        searchtype,
        starttime,
        endtime,
        province,
        city,
        longitue,
        latitude,
        radius);

    searchAPI.shutdownConnection();
    /*
     * --------------------------------------------- 搜索相关测试例 end
     * ------------------------------------------------
     */

    /*
     * --------------------------------------------- 私信相关测试例
     * begin-----------------------------------------------
     */
    PrivateAPI privateAPI = new PrivateAPI(oAuth.getOauthVersion());

    privateAPI.recv(oAuth, format, pageflag, pagetime, reqnum, lastid, contenttype);
    privateAPI.send(oAuth, format, pageflag, pagetime, reqnum, lastid, contenttype);

    privateAPI.shutdownConnection();
    /*
     * ---------------------------------------------- 私信相关测试例
     * end------------------------------------------------
     */

    /*
     * --------------------------------------------- 时间线相关测试例
     * begin----------------------------------------------
     */
    StatusesAPI statusesAPI = new StatusesAPI(oAuth.getOauthVersion());

    statusesAPI.broadcastTimeline(
        oAuth, format, pageflag, pagetime, reqnum, lastid, type, contenttype);
    statusesAPI.homeTimeline(oAuth, format, pageflag, pagetime, reqnum, type, contenttype);
    statusesAPI.mentionsTimeline(
        oAuth, format, pageflag, pagetime, reqnum, lastid, type, contenttype);
    statusesAPI.usersTimeline(
        oAuth, format, pageflag, pagetime, reqnum, lastid, names, fopenids, type, contenttype);
    statusesAPI.userTimelineIds(
        oAuth, format, pageflag, pagetime, reqnum, lastid, name, fopenid, type, contenttype);
    statusesAPI.userTimeline(
        oAuth, format, pageflag, pagetime, reqnum, lastid, name, fopenid, type, contenttype);

    statusesAPI.shutdownConnection();
    /*
     * --------------------------------------------- 时间线相关测试例
     * begin----------------------------------------------
     */
  }