Package com.qq.open.qzone.share

Source Code of com.qq.open.qzone.share.QqAddShare

package com.qq.open.qzone.share;

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 org.apache.log4j.Logger;

import com.qq.open.common.OpenQqConstants;
import com.qq.open.common.OpenQqException;
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.QqAddShareParamBean;
import com.qq.open.qzone.bean.result.QqAddShareResultBean;

/**
*
* 发布一条动态(feeds)到QQ空间和朋友网
*
* @author HaoLiang
* @version 0.1.1
*
*/
public class QqAddShare {

  /** QQ互联工具类 */
  private OpenQqUtils oqu = new OpenQqUtils();
 
  /** 日志 */
  private Logger log = Logger.getLogger(QqAddShare.class);
 
  /**
   * 发布一条动态(feeds)到QQ空间和朋友网
   *
   * @param addShareBean 发布一条动态的参数Bean
   * @return 分享结果
   * @throws OpenQqException
   * @throws IOException
   * @throws JSONException
   */
  public QqAddShareResultBean addShare(QqAddShareParamBean addShareBean) throws IOException, JSONException {
    // 日志
    log.info("发布一条动态 开始....");
   
    // 分享结果
    String jsonData = oqu.doPost(OpenQqConstants.QQ_ADD_SHARE_URL,this.getAddSharParam(addShareBean));
   
    // 分享结果
    QqAddShareResultBean resulstBean = this.jsonToBean(jsonData);
   
    // 日志
    log.info("发布一条动态 结束....");
   
    return resulstBean;
  }
 
 
 
  /**
   * 获取发布动态的内容和参数信息
   *    包含要发布的各种参数
   *
   * @param addShareBean 参数Bean
   * @return 请求参数
   * @throws UnsupportedEncodingException
   */
  private MultipartEntity getAddSharParam(QqAddShareParamBean addShareBean) throws UnsupportedEncodingException {
    MultipartEntity reqEntity = new MultipartEntity();
   
    // AccessToken
      reqEntity.addPart("access_token", new StringBody(addShareBean.getAccessToken()));
     
      // AppId
      reqEntity.addPart("oauth_consumer_key", new StringBody(oqu.getConfigValue("qq.appid")));
     
      // OpenId
      reqEntity.addPart("openid", new StringBody(addShareBean.getOpenId()));
   
    // 定义API返回的数据格式
      reqEntity.addPart("format", new StringBody("json"));
   
    // feeds的标题
      reqEntity.addPart("title", new StringBody(addShareBean.getTitle(), Charset.forName("UTF-8")));
   
    // 分享所在网页资源的链接
      reqEntity.addPart("url", new StringBody(addShareBean.getUrl()));
   
      // 用户评论内容,也叫发表分享时的分享理由
    if (oqu.isNotNull(addShareBean.getComment())) {
      reqEntity.addPart("comment", new StringBody(addShareBean.getComment(), Charset.forName("UTF-8")));
    }
   
    // 所分享的网页资源的摘要内容
    if (oqu.isNotNull(addShareBean.getSummary())) {
      reqEntity.addPart("summary", new StringBody(addShareBean.getSummary(), Charset.forName("UTF-8")));
    }
   
    // 所分享的网页资源的代表性图片链接
    if (oqu.isNotNull(addShareBean.getImages())) {
      reqEntity.addPart("images", new StringBody(addShareBean.getImages()));
    }
   
    // 分享的场景
    if (oqu.isNotNull(addShareBean.getSource())) {
      // 取值说明:1.通过网页 2.通过手机 3.通过软件 4.通过IPHONE 5.通过 IPAD
      reqEntity.addPart("source", new StringBody(addShareBean.getSource()));
    }
   
    // 分享内容的类型
    if (oqu.isNotNull(addShareBean.getType())) {
      // 4表示网页;5表示视频(type=5时,必须传入playurl)
      reqEntity.addPart("type", new StringBody(addShareBean.getType()));
    }
   
    // 长度限制为256字节。仅在type=5的时候有效。
    if (oqu.isNotNull(addShareBean.getPlayUrl())) {
      reqEntity.addPart("playurl", new StringBody(addShareBean.getPlayUrl()));
    }
   
    // 值为1时,表示分享不默认同步到微博,其他值或者不传此参数表示默认同步到微博。
    if (oqu.isNotNull(addShareBean.getNswb())) {
      reqEntity.addPart("nswb", new StringBody(addShareBean.getNswb()));
    }
   
    return reqEntity;
  }
 
 
  /**
   * 把接口返回的json数据转换成JavaBean
   *
   * @param jsonData 接口返回的数据
   * @return JavaBean数据
   * @throws JSONException
   */
  private QqAddShareResultBean jsonToBean(String jsonData) throws JSONException {
    QqAddShareResultBean resultBean = new QqAddShareResultBean();
   
    // 接口返回的数据json
    JSONObject jsonObjRoot;
    try {
      jsonObjRoot = new JSONObject(jsonData);
     
      // 接口返回错误的场合
      if (jsonObjRoot.getInt("ret") != 0) {
        // 设置错误标识为真
        resultBean.setErrorFlg(true);
       
        // 设置错误编号
        resultBean.setErrorCode(jsonObjRoot.get("ret").toString());
       
        // 设置错误信息
        resultBean.setErrorMes(jsonObjRoot.getString("msg"));
      }
    } catch (JSONException e) {
      e.printStackTrace();
      log.error("addShare 异常,json数据是:" + jsonData);
      throw e;
    }
   
    return resultBean;
  }
 
}
TOP

Related Classes of com.qq.open.qzone.share.QqAddShare

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.