最近项目须要调用人人网的开放平台接口,研究了一下人人网的API,封装了一些经常使用接口的调用方法,项目测试经过。主要用到了apache.commons.httpclient 封装类(jar包就不提供了咯),现分享其中的一个接口调用,(固然,你得首先去人人网开放平台申请应用获得的appKey) java
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受权认证的) apache
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()); // 一、参数格式化 for (Map.Entry<String, String> param : paramMap.entrySet()) { paramList.add(param.getKey() + "=" + param.getValue()); } // 二、排序并拼接成一个字符串 Collections.sort(paramList); StringBuffer buffer = new StringBuffer(); for (String param : paramList) { buffer.append(param); } // 三、追加script key buffer.append(secret); // 四、将拼好的字符串转成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; } }