這裏介紹的是大衆點評的團購中的一個接口,就是所有團購信息,其他的接口的實現是大同小異的。
首先,登錄大衆點評的開發平臺->大衆點評 。然後獲取到自己的應用的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