Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 大眾點評的接入

Android 大眾點評的接入

編輯:關於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 paramMap)
    {
        String sign = sign(appKey, secret, paramMap);

        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("appkey=").append(appKey).append("&sign=").append(sign);
        for (Entry 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 paramMap)
    {
        String sign = sign(appKey, secret, paramMap);

        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("appkey=").append(appKey).append("&sign=").append(sign);
        for (Entry 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 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 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 paramMap = new HashMap();
					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



  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved