这里介绍的是大众点评的团购中的一个接口。就是全部团购信息,其它的接口的实现是大同小异的。
首先,登录大众点评的开发平台->大众点评 。
然后获取到自己的应用的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
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