package com.qq.open.qzone.blog;
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.OpenQqUtils;
import com.qq.open.common.json.JSONException;
import com.qq.open.common.json.JSONObject;
import com.qq.open.qzone.bean.param.QqAddBlogParamBean;
import com.qq.open.qzone.bean.result.QqAddBlogResultBean;
/**
* 登录用户发表一篇新日志
*
* @author HaoLiang
* @version 0.1.1
*
*/
public class QqAddOneBlog {
/** 日志 */
private Logger log = Logger.getLogger(QqAddOneBlog.class);
/** QQ互联工具类 */
private OpenQqUtils oqu = new OpenQqUtils();
/**
* 登录用户发表一篇新日志
*
* @param paramBean 参数
* @return 接口返回的数据
* @throws JSONException
* @throws IOException
*/
public QqAddBlogResultBean addOneBlog(QqAddBlogParamBean paramBean) throws JSONException, IOException {
// 日志
log.info("登录用户发表一篇新日志 开始....");
// 获取接口的参数
MultipartEntity reqEntity = this.getPostParam(paramBean);
// 接口返回的json数据
String jsonData = oqu.doPost(OpenQqConstants.QQ_ADD_ONE_BLOG_URL, reqEntity);
// 返回接口返回的数据
QqAddBlogResultBean resultBean = this.jsonToBean(jsonData);
// 日志
log.info("登录用户发表一篇新日志 结束....");
return resultBean;
}
/**
* 获取接口的参数
*
* @param addBlogBean 参数
* @return 接口参数
* @throws UnsupportedEncodingException
*/
private MultipartEntity getPostParam(QqAddBlogParamBean addBlogBean)
throws UnsupportedEncodingException {
MultipartEntity reqEntity = new MultipartEntity();
// AccessToken
reqEntity.addPart("access_token", new StringBody(addBlogBean
.getAccessToken()));
// AppId
reqEntity.addPart("oauth_consumer_key", new StringBody(oqu.getConfigValue("qq.appid")));
// Openid
reqEntity.addPart("openid", new StringBody(addBlogBean.getOpenId()));
// 定义API返回的数据格式
reqEntity.addPart("format", new StringBody("json"));
// 日志标题
reqEntity.addPart("title", new StringBody(addBlogBean.getTitle(),
Charset.forName("UTF-8")));
// 日志内容
reqEntity.addPart("content", new StringBody(addBlogBean.getContent(),
Charset.forName("UTF-8")));
return reqEntity;
}
/**
* 把接口返回的json数据转换成JavaBean
*
* @param jsonData 接口返回的数据
* @return JavaBean数据
* @throws JSONException
* @throws JSONException
*/
private QqAddBlogResultBean jsonToBean(String jsonData) throws JSONException {
// 接口返回数据Bean
QqAddBlogResultBean resultBean = new QqAddBlogResultBean();
// 接口返回的数据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"));
} else {
resultBean.setUrl(jsonObjRoot.get("url").toString());
}
} catch (JSONException e) {
e.printStackTrace();
// 把错误的json数据写入Log
log.error("addOneBlog异常,json数据是:" + jsonData);
throw e;
}
return resultBean;
}
}