最近项目需要调用人人网的开放平台接口,研究了一下人人网的API,封装了一些常用接口的调用方法,项目测试通过。主要用到了apache.commons.httpclient 封装类(jar包就不提供了咯),现分享其中的一个接口调用,(当然,你得首先去人人网开放平台申请应用得到的appKey)
1.人人网客户端调用接口
/**
* 获取人人网当前登录用户的好友列表。
* @author SU
* @param accessToken
* @return String
*/
// @SuppressWarnings("unchecked")
public static String getRenrenFriends(String accessToken)
{
String result = "" ; // 返回当前登录用户的好友列表
//请求参数
String method = "friends.getFriends";
String v = "1.0";
String access_token = accessToken;
String format = "JSON";
// String fields ="id,name" ;
//签名算法 : 签名是由请求参数和应用的私钥Secret Key经过MD5加密后生成的字符串。应用在调用人人API之前,要计算出签名,并追加到请求参数中。
Map<String,String> paramMap = new HashMap<String,String>();
paramMap.put("method", method);
paramMap.put("v", v);
paramMap.put("access_token", access_token);
paramMap.put("format", format);
String sig = Signa.getSignature(paramMap, "ebb787fa7bf44827b34ba66556a73f0a"); //Secret_Key必须传对,否则会sig认证失败
// 请求人人网开放平台API服务器的地址
String url = "http://api.renren.com/restserver.do";
PostMethod postMethod = new PostMethod(url);
// 将以上准备好的参数添加到postMethod对象中
postMethod.addParameter("sig", sig);
postMethod.addParameter("method", method);
postMethod.addParameter("v", v);
postMethod.addParameter("access_token", access_token);
postMethod.addParameter("format", format);
HttpClient client = new HttpClient();
try
{
client.executeMethod(postMethod);
result = postMethod.getResponseBodyAsString();
log.info("人人网我的好友列表result的返回结果:-------->" + result);
}
catch (HttpException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return result ;
}
2.调用接口的时候需要的签名算法(因为人人网不是用oauth2.0授权认证的)
package com.conmon.wb;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
public class Signa
{
public static String getSignature(Map<String, String> paramMap, String secret)
{
List<String> paramList = new ArrayList<String>(paramMap.size());
// 1、参数格式化
for (Map.Entry<String, String> param : paramMap.entrySet())
{
paramList.add(param.getKey() + "=" + param.getValue());
}
// 2、排序并拼接成一个字符串
Collections.sort(paramList);
StringBuffer buffer = new StringBuffer();
for (String param : paramList)
{
buffer.append(param);
}
// 3、追加script key
buffer.append(secret);
// 4、将拼好的字符串转成MD5值
try
{
java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
StringBuffer result = new StringBuffer();
try
{
for (byte b : md.digest(buffer.toString().getBytes("UTF-8")))
{
result.append(Integer.toHexString((b & 0xf0) >>> 4));
result.append(Integer.toHexString(b & 0x0f));
}
}
catch (UnsupportedEncodingException e)
{
for (byte b : md.digest(buffer.toString().getBytes()))
{
result.append(Integer.toHexString((b & 0xf0) >>> 4));
result.append(Integer.toHexString(b & 0x0f));
}
}
return result.toString();
}
catch (java.security.NoSuchAlgorithmException ex)
{
ex.printStackTrace();
}
return null;
}
}