Package com.qq.open.qzone.topic

Source Code of com.qq.open.qzone.topic.QqAddTopic

package com.qq.open.qzone.topic;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;

import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.StringBody;

import com.qq.open.common.OpenQqConstants;
import com.qq.open.common.OpenQqUtils;
import com.qq.open.common.json.JSONException;
import com.qq.open.common.json.JSONObject;
import com.qq.open.qzone.bean.param.QqAddTopicParamBean;
import com.qq.open.qzone.bean.result.QqAddTopicResultBean;

/**
* 登录用户发布心情
*    发布以后,将在QQ空间的说说下添加一条动态,以分享给好友。
* @author HaoLiang
*
*/
public class QqAddTopic {
 
  /** QQ互联工具类 */
  private OpenQqUtils oqu = new OpenQqUtils();

 
  /**
   * 发布心情
   *
   * @param addTopicBean 参数
   * @return 接口返回Bean
   * @throws IOException
   * @throws JSONException
   */
  public QqAddTopicResultBean addTopic(QqAddTopicParamBean addTopicBean) throws IOException, JSONException {
   
    // 请求接口,获取发布心情结果
    String jsonData = oqu.doPost(OpenQqConstants.QQ_ADD_TOPIC_URL,this.getAddTopicParam(addTopicBean));
   
    return this.jsonToBean(jsonData);
  }
 
 
 
  /**
   * 封装Post请求参数
   *
   * @param addTopicBean 参数
   * @return  Post请求参数
   * @throws UnsupportedEncodingException
   */
  private MultipartEntity getAddTopicParam(QqAddTopicParamBean addTopicBean) throws UnsupportedEncodingException {
    MultipartEntity reqEntity = new MultipartEntity();
    // AccessToken
    reqEntity.addPart("access_token", new StringBody(addTopicBean
        .getAccessToken()));
   
    // AppId
    reqEntity.addPart("oauth_consumer_key", new StringBody(oqu.getConfigValue("qq.appid")));
   
    // OpenId
    reqEntity.addPart("openid", new StringBody(addTopicBean.getOpenId()));
   
    // 定义API返回的数据格式
    reqEntity.addPart("format", new StringBody("json"));
   
    // 发布的心情的内容
    reqEntity.addPart("con", new StringBody(addTopicBean.getCon(), Charset.forName("UTF-8")));
   
    // 发布心情时引用的信息的类型
    if (addTopicBean.getRichtype() > 0) {
      // 1表示图片; 2表示网页; 3表示视频
      reqEntity.addPart("richtype", new StringBody(String.valueOf(addTopicBean.getRichtype())));
    }
   
    // 发布心情时引用的信息的值
    if (oqu.isNotNull(addTopicBean.getRichval())) {
      reqEntity.addPart("richval", new StringBody(addTopicBean.getRichval()));
    }
   
    // 发布心情时引用的地址
    if (oqu.isNotNull(addTopicBean.getLbsNm())) {
      reqEntity.addPart("lbs_nm", new StringBody(addTopicBean.getLbsNm()));
    }
   
    // 发布心情时引用的经度
    if (oqu.isNotNull(addTopicBean.getLbsX())) {
      reqEntity.addPart("lbs_x", new StringBody(addTopicBean.getLbsX()));
    }
   
    // 发布心情时引用的纬度
    if (oqu.isNotNull(addTopicBean.getLbsY())) {
      reqEntity.addPart("lbs_y", new StringBody(addTopicBean.getLbsY()));
    }
   
    // 第三方应用的平台类型
    if (oqu.isNotNull(addTopicBean.getLbsY())) {
      // 1表示QQ空间; 2表示腾讯朋友; 3表示腾讯微博平台; 4表示腾讯Q+平台
      reqEntity.addPart("third_source", new StringBody(addTopicBean.getThirdSource()));
    }
   
    return reqEntity;
  }
 
 
  /**
   * json数据转换成javaBean
   *
   * @param jsonData 接口返回的数据
   * @return javaBean
   * @throws JSONException
   */
  private QqAddTopicResultBean jsonToBean(String jsonData) throws JSONException {
    QqAddTopicResultBean resultBean = new QqAddTopicResultBean();
   
    JSONObject jsonObjRoot;
    try {
      jsonObjRoot = new JSONObject(jsonData);
     
      // 接口返回错误的场合
      if (jsonObjRoot.getInt("ret") != 0) {
        // 设置错误标识为真
        resultBean.setErrorFlg(true);
        // 设置错误编号
        resultBean.setErrorCode(jsonObjRoot.get("errcode").toString());
        // 设置错误内容
        resultBean.setErrorMes(jsonObjRoot.getString("msg"));
      }
    } catch (JSONException e) {
      e.printStackTrace();
      throw e;
    }
   
    return resultBean;
  }
}
TOP

Related Classes of com.qq.open.qzone.topic.QqAddTopic

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.