Package com.qq.open.weibo

Source Code of com.qq.open.weibo.WeiBoGetInfo

package com.qq.open.weibo;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;

import com.qq.open.common.OpenQqConstants;
import com.qq.open.common.OpenQqUtils;
import com.qq.open.common.json.JSONArray;
import com.qq.open.common.json.JSONException;
import com.qq.open.common.json.JSONObject;
import com.qq.open.weibo.bean.param.WeiBoGetInfoParamBean;
import com.qq.open.weibo.bean.result.WeiBoEduResultBean;
import com.qq.open.weibo.bean.result.WeiBoGetInfoResultBean;
import com.qq.open.weibo.bean.result.WeiBoTagResultBean;

/**
* 获取腾讯微博登录用户的用户资料
*
* @author HaoLiang
*
*/
public class WeiBoGetInfo {

  /** QQ互联工具类 */
  private OpenQqUtils oqu = new OpenQqUtils();
 
  /** 日志 */
  private Logger log = Logger.getLogger(WeiBoGetInfo.class);
 
 
  /**
   * 获取登陆用户资料
   *
   * @param paramBean 参数
   * @return 接口返回数据
   * @throws JSONException
   * @throws IOException
   */
  public WeiBoGetInfoResultBean getInfo(WeiBoGetInfoParamBean paramBean) throws IOException, JSONException {
   
    // 日志
    log.info("获取登陆用户的微博资料 开始...");
   
    // 获取接口URL
    String interfaceUrl = this.getIngerfaceUrl(paramBean);
   
    // 请求接口,接收接口返回的json数据
    String jsonData = oqu.doGet(interfaceUrl);
   
    // 微博资料
    WeiBoGetInfoResultBean resultBean = null;
    try {
      resultBean = this.jsonToBean(jsonData);
    } catch (JSONException e) {
      e.printStackTrace();
      // 日志
      log.error("getInfo 异常,json数据是:" + jsonData);
      throw e;
    }
   
    // 日志
    log.info("获取登陆用户的微博资料 结束...");
   
    return resultBean;
  }
 
 
  /**
   * 获取登陆用接口地址
   *
   * @param paramBean 参数
   * @return 接口地址
   */
  private String getIngerfaceUrl(WeiBoGetInfoParamBean paramBean) {
   
    // 接口URL
    StringBuilder interfaceUrl = new StringBuilder();
   
    // 获取登录用户收听的人的列表 接口URL
    interfaceUrl.append(OpenQqConstants.WEIBO_GET_INFO_URL);
   
    // AccessToken
    interfaceUrl.append("?access_token=" + paramBean.getAccessToken());
   
    // AppId
    interfaceUrl.append("&oauth_consumer_key=" + oqu.getConfigValue("qq.appid"));
   
    // OpenId
    interfaceUrl.append("&openid=" + paramBean.getOpenId());
   
    // 定义API返回的数据格式。
    interfaceUrl.append("&format=json");
   
    return interfaceUrl.toString();
   
  }
 
 
  /**
   * 把接口返回的json数据转换成JavaBean
   *
   * @param jsonData 接口返回的数据
   * @return JavaBean数据
   * @throws JSONException
   */
  private WeiBoGetInfoResultBean jsonToBean(String jsonData) throws JSONException {
   
    WeiBoGetInfoResultBean resultBean = new WeiBoGetInfoResultBean();
   
    // 格式化json数据
    JSONObject jsonObjRoot = new JSONObject(jsonData);
   
    // 接口返回出错的场合
    if (jsonObjRoot.getInt("ret") != 0) {
     
      // 设置错误标识
      resultBean.setErrorFlg(true);
     
      // 错误编号
      resultBean.setErrorCode(jsonObjRoot.get("errcode").toString());
     
      // 错误信息
      resultBean.setErrorMes(jsonObjRoot.getString("msg"));
    } else {
     
      // 他用户详细信息
      JSONObject jsonDataObj = new JSONObject(jsonObjRoot.getJSONObject("data").toString());
     
      // 其他用户的帐号名
      resultBean.setName(jsonDataObj.getString("name"));
     
      // 其他用户的唯一ID
      resultBean.setOpenId(jsonDataObj.getString("openid"));
     
      // 其他用户昵称
      resultBean.setNick(jsonDataObj.getString("nick"));
     
      // 其他用户头像url
      resultBean.setHead(jsonDataObj.getString("head"));
     
      // 其他用户所在地
      resultBean.setLocation(jsonDataObj.getString("location"));
     
      // 其他用户是否为微博认证用户
      resultBean.setIsvip(jsonDataObj.get("isvip").toString());
     
      // 其他用户是否为企业机构
      resultBean.setIsent(jsonDataObj.get("isent").toString());
     
      // 其他用户的个人介绍
      resultBean.setIntroduction(jsonDataObj.getString("introduction"));
     
      // 认证信息
      resultBean.setVerifyInfo(jsonDataObj.getString("verifyinfo"));
     
      // 其他用户出生年
      resultBean.setBirthYear(jsonDataObj.get("birth_year").toString());
     
      // 其他用户出生月份
      resultBean.setBirthMonth(jsonDataObj.get("birth_month").toString());
     
      // 其他用户出生日
      resultBean.setBirthDay(jsonDataObj.get("birth_day").toString());
     
      // 其他用户所在的国家代码
      resultBean.setCountryCode(jsonDataObj.get("country_code").toString());
     
      // 其他用户所在的省代码
      resultBean.setProvinceCode(jsonDataObj.get("province_code").toString());
     
      // 其他用户所在的城市代码
      resultBean.setCityCode(jsonDataObj.get("city_code").toString());
     
      // 其他用户性别
      resultBean.setSex(jsonDataObj.get("sex").toString());
     
      // 其他用户听众数
      resultBean.setFansNum(jsonDataObj.get("fansnum").toString());
     
      // 其他用户收听的人数
      resultBean.setIdolNum(jsonDataObj.get("idolnum").toString());
     
      // 其他用户发表的微博数
      resultBean.setTweetNum(jsonDataObj.get("tweetnum").toString());
     
      // 用户注册的邮箱
      resultBean.setEmail(jsonDataObj.getString("email"));
     
      if (!"null".equals(jsonDataObj.get("tag").toString())) {
        // 听众标签集合
        List<WeiBoTagResultBean> tagsList = new ArrayList<WeiBoTagResultBean>();
       
        // 听众标签
        JSONArray tagsArray = jsonDataObj.getJSONArray("tag");
       
        for (int j = 0; j < tagsArray.length(); j++) {
          WeiBoTagResultBean tagsBean = new WeiBoTagResultBean();
          // 听众标签
          JSONObject tagsObject = new JSONObject(tagsArray.get(j).toString());
         
          // 标签ID
          tagsBean.setId(tagsObject.getString("id"));
         
          // 标签名
          tagsBean.setName(tagsObject.getString("name"));
         
          tagsList.add(tagsBean);
        }
        resultBean.setTagsList(tagsList);
      }
     
      if (!"null".equals(jsonDataObj.get("edu").toString())) {
       
        List<WeiBoEduResultBean> edusList = new ArrayList<WeiBoEduResultBean>();
       
        // 听众标签
        JSONArray edusArray = jsonDataObj.getJSONArray("edu");
       
        for (int j = 0; j < edusArray.length(); j++) {
          WeiBoEduResultBean edusBean = new WeiBoEduResultBean();
          // 听众标签
          JSONObject edusObject = new JSONObject(edusArray.get(j).toString());
         
          // 教育信息记录ID
          edusBean.setId(edusObject.get("id").toString());
         
          // 入学年
          edusBean.setYear(edusObject.get("year").toString());
         
          // 学校ID
          edusBean.setSchoolId(edusObject.get("schoolid").toString());
         
          // 院系ID
          edusBean.setDepartmentId(edusObject.get("departmentid").toString());
         
          // 学历级别
          edusBean.setLevel(edusObject.get("level").toString());
         
          edusList.add(edusBean);
        }
        resultBean.setEdusList(edusList);
      }
    }
   
    return resultBean;
  }
}
TOP

Related Classes of com.qq.open.weibo.WeiBoGetInfo

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.