Package com.qq.open.weibo

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

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.WeiBoGetOtherInfoParamBean;
import com.qq.open.weibo.bean.result.WeiBoEduResultBean;
import com.qq.open.weibo.bean.result.WeiBoGetOtherInfoResultBean;
import com.qq.open.weibo.bean.result.WeiBoTagResultBean;

/**
* 获取腾讯微博其他用户详细信息
*
* @author HaoLiang
*
*/
public class WeiBoGetOtherInfo {

  /** QQ互联工具类 */
  private OpenQqUtils oqu = new OpenQqUtils();
 
  /** 日志 */
  private Logger log = Logger.getLogger(WeiBoGetOtherInfo.class);
 
  /**
   * 获取腾讯微博其他用户详细信息
   *
   * @param paramBean 参数
   * @return 其他用户详细信息
   * @throws IOException
   * @throws JSONException
   */
  public WeiBoGetOtherInfoResultBean getOtherInfo(WeiBoGetOtherInfoParamBean paramBean) throws IOException, JSONException {
   
    // 日志
    log.info("获取腾讯微博其他用户详细信息 开始...");
   
    // 接口URL
    String interfaceUrl = this.getInterfaceUrl(paramBean);
   
    // 接口返回的Json数据
    String jsonData = oqu.doGet(interfaceUrl);
   
    // 用户详细信息
    WeiBoGetOtherInfoResultBean resultBean = null;
    try {
      resultBean = this.jsonToBean(jsonData);
    } catch (JSONException e) {
      e.printStackTrace();
      // 日志
      log.error("getOtherInfo 异常,json数据是:" + jsonData);
      throw e;
    }
   
    // 日志
    log.info("获取腾讯微博其他用户详细信息 结束...");
   
    return resultBean;
  }
 
 
  /**
   * 获取接口URL
   *
   * @param paramBean 参数
   * @return 接口URL
   */
  private String getInterfaceUrl(WeiBoGetOtherInfoParamBean paramBean) {
   
    StringBuilder interfaceUrl = new StringBuilder();
   
    // 获取登录用户的听众列表
    interfaceUrl.append(OpenQqConstants.WEIBO_GET_OTHER_INFO_URL);
   
    // AccessToken
    interfaceUrl.append("?access_token=" + paramBean.getAccessToken());
   
    // AppId
    interfaceUrl.append("&oauth_consumer_key=" + oqu.getConfigValue("qq.appid"));
   
    // 其他用户的账户名
    interfaceUrl.append("&name=" + paramBean.getName());
   
    // 其他用户的openid
    interfaceUrl.append("&openid=" + paramBean.getOtherOpenId());

    // 定义API返回的数据格式。
    interfaceUrl.append("&format=json");
   
    return interfaceUrl.toString();
  }
 
 
  /**
   * json数据 转 javaBean
   *
   * @param jsonData 接口返回数据
   * @return javaBean数据
   * @throws JSONException
   */
  private WeiBoGetOtherInfoResultBean jsonToBean(String jsonData) throws JSONException {
   
    // 获取腾讯微博其他用户详细信息 结果Bean
    WeiBoGetOtherInfoResultBean resultBean = new WeiBoGetOtherInfoResultBean();
   
    // 格式化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.setIsMyIdol(jsonDataObj.get("ismyidol").toString());
     
      // 是否为登录用户的听众
      resultBean.setIsMyFans(jsonDataObj.get("ismyfans").toString());
     
      // 是否在登录用户的黑名单中
      resultBean.setIsMyBlack(jsonDataObj.get("ismyblack").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.WeiBoGetOtherInfo

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.