封裝的人人網客戶端調用接口

      最近項目須要調用人人網的開放平臺接口,研究了一下人人網的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;
    }
}
相關文章
相關標籤/搜索