• Android 大众点评的接入


    这里介绍的是大众点评的团购中的一个接口。就是全部团购信息,其它的接口的实现是大同小异的。

    首先,登录大众点评的开发平台->大众点评 。

    然后获取到自己的应用的appkey和secret。这个是开发必备的。能够下载大众点评提供的demo->demo 。

    获取全部的团购信息:

    DZDPApiTool.java 大众点评提供的Api工具类(请求api -> requestApi这种方法)

    public class DZDPApiTool {
    	/**
         * 获取请求字符串
         * 
         * @param appKey
         * @param secret
         * @param paramMap
         * @return
         */
        public static String getQueryString(String appKey, String secret, Map<String, String> paramMap)
        {
            String sign = sign(appKey, secret, paramMap);
    
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.append("appkey=").append(appKey).append("&sign=").append(sign);
            for (Entry<String, String> entry : paramMap.entrySet())
            {
                stringBuilder.append('&').append(entry.getKey()).append('=').append(entry.getValue());
            }
            String queryString = stringBuilder.toString();
            return queryString;
        }
    
        /**
         * 获取请求字符串,參数值进行UTF-8处理
         * 
         * @param appKey
         * @param secret
         * @param paramMap
         * @return
         */
        public static String getUrlEncodedQueryString(String appKey, String secret, Map<String, String> paramMap)
        {
            String sign = sign(appKey, secret, paramMap);
    
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.append("appkey=").append(appKey).append("&sign=").append(sign);
            for (Entry<String, String> entry : paramMap.entrySet())
            {
                try
                {
                    stringBuilder.append('&').append(entry.getKey()).append('=').append(URLEncoder.encode(entry.getValue(),
                                                                                                          "UTF-8"));
                }
                catch (UnsupportedEncodingException e)
                {
                }
            }
            String queryString = stringBuilder.toString();
            return queryString;
        }
    
        /**
         * 请求API
         * 
         * @param apiUrl
         * @param appKey
         * @param secret
         * @param paramMap
         * @return
         */
        public static String requestApi(String apiUrl, String appKey, String secret, Map<String, String> paramMap)
        {
            String queryString = getQueryString(appKey, secret, paramMap);
    
            StringBuffer response = new StringBuffer();
            HttpClientParams httpConnectionParams = new HttpClientParams();
            httpConnectionParams.setConnectionManagerTimeout(1000);
            HttpClient client = new HttpClient(httpConnectionParams);
            HttpMethod method = new GetMethod(apiUrl);
    
            try
            {
                if (queryString != null && !queryString.isEmpty())
                {
                    // Encode query string with UTF-8
                    String encodeQuery = URIUtil.encodeQuery(queryString, "UTF-8");
                    method.setQueryString(encodeQuery);
                }
    
                client.executeMethod(method);
                BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(), "UTF-8"));
                String line = null;
                while ((line = reader.readLine()) != null)
                {
                    response.append(line).append(System.getProperty("line.separator"));
                }
                reader.close();
            }
            catch (URIException e)
            {
            }
            catch (IOException e)
            {
            }
            finally
            {
                method.releaseConnection();
            }
            return response.toString();
    
        }
    
        /**
         * 签名
         * 
         * @param appKey
         * @param secret
         * @param paramMap
         * @return
         */
        public static String sign(String appKey, String secret, Map<String, String> paramMap)
        {
            // 參数名排序
            String[] keyArray = paramMap.keySet().toArray(new String[0]);
            Arrays.sort(keyArray);
    
            // 拼接參数
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.append(appKey);
            for (String key : keyArray)
            {
                stringBuilder.append(key).append(paramMap.get(key));
            }
    
            stringBuilder.append(secret);
            String codes = stringBuilder.toString();
    
            // SHA-1签名
            // For Android
            String sign = new String(Hex.encodeHex(DigestUtils.sha(codes))).toUpperCase();
    
            return sign;
        }
    }
    然后调用接口

    Map<String, String> paramMap = new HashMap<String, String>();
    					paramMap.put("city", city);
    					paramMap.put("limit", 1);
    					paramMap.put("page", offset + "");
    					paramMap.put("region", region);
    
    DZDPApiTool.requestApi(http://api.dianping.com/v1/deal/find_deals, appkey, sign, paramMap);
    參数:(引用大众点评)

    • 必选參数

      名称 类型 说明
      appkey string App Key,应用的唯一标识
      sign string 请求签名,生成方式见《API请求签名生成文档》
      city string 包括团购信息的城市名称。可选范围见相关API返回结果
    • 可选參数

      名称 类型 说明
      destination_city string 指定目的地城市名称。适用于“酒店”、“旅游”等分类,可选范围见相关API返回结果
      latitude float 纬度坐标,须与经度坐标同一时候传入
      longitude float 经度坐标,须与纬度坐标同一时候传入
      radius int 搜索半径,单位为米,最小值1,最大值5000。如不传入默觉得1000
      region string 包括团购信息的城市区域名,可选范围见相关API返回结果(不含返回结果中包括的城市名称信息)
      category string 包括团购信息的分类名,支持多个category合并查询,多个category用逗号切割。

      可选范围见相关API返回结果

      is_local int 依据是否是本地单来筛选返回的团购。1:是。0:不是
      keyword string 关键词,搜索范围包含商户名、商品名、地址等
      sort int 结果排序,1:默认,2:价格低优先。3:价格高优先。4:购买人数多优先,5:最新公布优先。6:即将结束优先。7:离经纬度坐标距离近优先
      limit int 每页返回的团单结果条目数上限。最小值1,最大值40,如不传入默觉得20
      page int 页码。如不传入默觉得1,即第一页
      format string 返回数据格式,可选值为json或xml,如不传入,默认值为json




  • 相关阅读:
    Dojo(发音:豆粥)的目标是解决DHTML应用程序长期存在的历史问题
    如何用Fireworks制作图标的透明效果
    2021.09.15膜你赛
    2021.09.14 膜你赛
    2021.08.29 膜你赛
    2021.08.28 膜你赛
    2021.10.06 膜你赛
    2021.09.18 膜你赛
    2021.09.13膜你赛
    2021.10.05膜你赛
  • 原文地址:https://www.cnblogs.com/lytwajue/p/6844415.html
Copyright © 2020-2023  润新知