package edu.minggo.tencent.weibo;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.List;
import java.util.Map;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
/**
* ��Ҫ�Ƿ�����
* @author minggo
* @created 2013-2-28����02:41:13
*/
public class WeiBoClient {
private OAuthConsumer consumer;
public WeiBoClient(String consumer_key,String consumer_key_secret,String oauth_token,String oauth_token_secret){
System.out.println("oauth_token:"+oauth_token+";"+"oauth_token_secret:"+oauth_token_secret );
consumer = new CommonsHttpOAuthConsumer(consumer_key, consumer_key_secret);
consumer.setTokenWithSecret(oauth_token, oauth_token_secret);
}
@SuppressWarnings("static-access")
public String doPost(String url,Map<String,String> addtionalParams,List<String> decodeNames){
consumer = new OAuthUtils().addAddtionalParametersFromMap(consumer, addtionalParams);
HttpPost postRequest = new HttpPost(url);
try {
//���������ǩ��������֤��Ϣ��������һ��consumer����
consumer.sign(postRequest);
} catch (Exception e) {
e.printStackTrace();
}
//��Ѷ����֧��Header�������ݣ���Oauth��ʹ��Header�������ݣ�������� Headerȡ������
Header oauthHeader = postRequest.getFirstHeader("Authorization");
String baseString = oauthHeader.getValue().substring(5);
Map<String,String> oauthMap = StringUtils.parseMapFromString(baseString);
oauthMap = HttpUtils.decodeByDecodeNames(decodeNames, oauthMap);
addtionalParams = HttpUtils.decodeByDecodeNames(decodeNames, addtionalParams);
List<NameValuePair> pairs = ApacheUtils.convertMapToNameValuePairs(oauthMap);
List<NameValuePair> weiBoPairs = ApacheUtils.convertMapToNameValuePairs(addtionalParams);
pairs.addAll(weiBoPairs);
HttpEntity entity = null;
HttpResponse response = null;
try {
entity = new UrlEncodedFormEntity(pairs,"UTF-8");
postRequest.setEntity(entity);
response = new DefaultHttpClient().execute(postRequest);
BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent()));
String line = "";
while((line = reader.readLine()) != null){
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
}
String result = ApacheUtils.getResponseText(response);
return result;
}
public String doGet(String url,Map<String,String> addtionalParams){
url = UrlUtils.buildUrlByQueryStringMapAndBaseUrl(url, addtionalParams);
try {
//���������ǩ��������֤��Ϣ��������һ��consumer����
System.out.println("ǩ��֮ǰ��URL-->"+url);
url = consumer.sign(url);
System.out.println("ǩ��֮���url-->"+url);
} catch (Exception e) {
e.printStackTrace();
}
HttpGet getRequest = new HttpGet(url);
HttpClient httpClient = new DefaultHttpClient();
HttpResponse response = null;
try {
response = httpClient.execute(getRequest);
} catch (Exception e) {
e.printStackTrace();
}
return ApacheUtils.getResponseText(response);
}
}