Android 大众点评的接入
- - CSDN博客推荐文章这里介绍的是大众点评的团购中的一个接口,就是所有团购信息,其他的接口的实现是大同小异的. 首先,登录大众点评的开发平台-> 大众点评 . 然后获取到自己的应用的appkey和secret,这个是开发必备的. 可以下载大众点评提供的demo-> demo . DZDPApiTool.java 大众点评提供的Api工具类(请求api -> requestApi这个方法).
这里介绍的是大众点评的团购中的一个接口,就是所有团购信息,其他的接口的实现是大同小异的。
首先,登录大众点评的开发平台-> 大众点评 。然后获取到自己的应用的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 |