package com.tencent.weibo.oauthv1;
import java.util.List;
import org.apache.http.NameValuePair;
import com.tencent.weibo.api.RequestAPI;
import com.tencent.weibo.beans.OAuth;
import com.tencent.weibo.exceptions.OAuthClientException;
import com.tencent.weibo.utils.QHttpClient;
/**
* 根据OAuth version 1 标准实现 Request API 接口的类
*/
public class OAuthV1Request implements RequestAPI {
private QHttpClient qHttpClient;
// private static Log log = LogFactory.getLog(OAuthV1Request.class);
/**
* 使用完毕后,请调用 shutdownConnection() 关闭自动生成的连接管理器
*/
public OAuthV1Request(){
qHttpClient=new QHttpClient();
}
public OAuthV1Request(QHttpClient qHttpClient) {
this.qHttpClient=qHttpClient;
}
public String getResource(String url, List<NameValuePair> paramsList, OAuth oAuth) throws Exception {
if(null==qHttpClient){
throw new OAuthClientException("1001");
}
OAuthV1 oAuthV1 = (OAuthV1) oAuth;
paramsList.addAll(oAuthV1.getTokenParamsList());
String queryString = OAuthV1Client.getOauthParams(url, "GET", oAuthV1.getOauthConsumerSecret(),
oAuthV1.getOauthTokenSecret(), paramsList);
return qHttpClient.httpGet(url, queryString);
}
public String postContent(String url, List<NameValuePair> paramsList, OAuth oAuth) throws Exception {
if(null==qHttpClient){
throw new OAuthClientException("1001");
}
OAuthV1 oAuthV1 = (OAuthV1) oAuth;
paramsList.addAll(oAuthV1.getTokenParamsList());
String queryString = OAuthV1Client.getOauthParams(url, "POST", oAuthV1.getOauthConsumerSecret(),
oAuthV1.getOauthTokenSecret(), paramsList);
// log.info("RequestAPI postContent queryString = " + queryString);
return qHttpClient.httpPost(url, queryString);
}
public String postFile(String url, List<NameValuePair> paramsList, List<NameValuePair> files, OAuth oAuth) throws Exception {
OAuthV1 oAuthV1 = (OAuthV1) oAuth;
paramsList.addAll(oAuthV1.getTokenParamsList());
String queryString = OAuthV1Client.getOauthParams(url, "POST", oAuthV1.getOauthConsumerSecret(),
oAuthV1.getOauthTokenSecret(), paramsList);
return qHttpClient.httpPostWithFile(url, queryString, files);
}
/**
* 如果是使用的是自动生成的QHttpClient,请用该方法关闭连接管理器
*/
public void shutdownConnection() {
qHttpClient.shutdownConnection();
}
public QHttpClient getqHttpClient() {
return qHttpClient;
}
public void setqHttpClient(QHttpClient qHttpClient) {
this.qHttpClient = qHttpClient;
}
}