/*
* Create Author : xiaopeng.li
* Create Date : 2013-12-26
* Project : DPOAuth2ClientDemo
* File Name : RequestUtils.java
*
* Copyright (c) 2010-2015 by Shanghai HanTao Information Co., Ltd.
* All rights reserved.
*
*/
package com.dianping.dpoauth2clientdemo.util;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
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;
import org.apache.http.message.BasicNameValuePair;
/**
* @author : xiaopeng.li
* <p>
* @version 2.2 2013-12-26
* @since DPOAuth2ClientDemo 2.2
*/
public class RequestUtils
{
private static final String UTF8 = "UTF8";
/**
*
* 请求AccessToken<p>
*
* Author xiaopeng.li, 2013-12-26
* @since DPOAuth2ClientDemo 2.0
*
* @param code
* @param state
* @return
*/
public static String requestAccessToken(String code, String state)
{
DefaultHttpClient client = new DefaultHttpClient();
List<BasicNameValuePair> paramPair = new ArrayList<BasicNameValuePair>();
paramPair.add(new BasicNameValuePair("client_id", Constants.APP_KEY));
paramPair.add(new BasicNameValuePair("grant_type", "authorization_code"));
paramPair.add(new BasicNameValuePair("scope", "user_info_read"));
paramPair.add(new BasicNameValuePair("redirect_uri", Constants.DEFAULT_REDIR_URI));
paramPair.add(new BasicNameValuePair("client_secret", Constants.APP_SECRET));
paramPair.add(new BasicNameValuePair("code", code));
paramPair.add(new BasicNameValuePair("state", state));
try
{
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramPair, UTF8);
HttpPost post = new HttpPost(Constants.TOKEN_URL);
post.setEntity(entity);
HttpResponse response = client.execute(post);
int result = response.getStatusLine().getStatusCode();
StringBuilder stringBuilder = new StringBuilder();
if (result == 200)
{
InputStream in = response.getEntity().getContent();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in, UTF8));
String line = bufferedReader.readLine();
while (line != null)
{
stringBuilder.append(line).append("\n");
line = bufferedReader.readLine();
}
}
return stringBuilder.toString();
}
catch (Exception e)
{
return e.getMessage();
}
}
/**
*
* 请求用户信息,使用AccessToken<p>
*
* Author xiaopeng.li, 2013-12-26
* @since DPOAuth2ClientDemo 2.0
*
* @param accessToken
* @return
*/
public static String requestUserInfo(String accessToken)
{
DefaultHttpClient client = new DefaultHttpClient();
try
{
HttpGet post = new HttpGet(Constants.API_URL.concat("?appkey=").concat(Constants.APP_KEY).concat("&access_token=").concat(accessToken));
HttpResponse response = client.execute(post);
int result = response.getStatusLine().getStatusCode();
StringBuilder stringBuilder = new StringBuilder();
if (result == 200)
{
InputStream in = response.getEntity().getContent();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in, UTF8));
String line = bufferedReader.readLine();
while (line != null)
{
stringBuilder.append(line).append("\n");
line = bufferedReader.readLine();
}
}
return stringBuilder.toString();
}
catch (Exception e)
{
e.printStackTrace();
return e.getMessage();
}
}
}