封装的人人网客户端调用接口

      最近项目需要调用人人网的开放平台接口,研究了一下人人网的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;
    }
}


转载于:https://my.oschina.net/u/1172409/blog/169426

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值