最近項目須要調用人人網的開放平臺接口,研究了一下人人網的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; } }