废话不多说,直接上代码,具体详情见附件,代码中AK替换成你自己的AK
package com.bugyun.constant; /** * 调用百度请求的参数常量 * @author Administrator * */ public class RequestArgsConstant { /** * 百度地图ak */ public static enum AK{ /** * 百度地图服务器端AK */ SERVER("ak","1VXoHnmOFbX9h5yNfpdL9hnf6GPaFM11"), /** * 百度地图浏览器端AK */ JS("ak","CYSQLGty1YSUGDmI2vkmdtwTQ14L0311"); private String key; private String value; private AK( String key , String value){ this.key = key ; this.value = value ; } public String getKey() { return key; } public void setKey(String key) { this.key = key; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } } }
package com.bugyun.constant; /** * 调用百度请求的URL常量 * POST:创建、更新、删除 * GET:查询 * @author Administrator * */ public class RequestURLConstant { /** * 位置数据表(geotable)的创建 */ public final static String GEOTABLE_CREATE= "http://api.map.baidu.com/geodata/v3/geotable/create"; /** * 位置数据表(geotable)的查询 */ public final static String GEOTABLE_QUERY= "http://api.map.baidu.com/geodata/v3/geotable/list"; /** * 位置数据表(geotable)的更新 */ public final static String GEOTABLE_UPDATE= "http://api.map.baidu.com/geodata/v3/geotable/update"; /** * 位置数据表(geotable)的删除 */ public final static String GEOTABLE_DELETE= "http://api.map.baidu.com/geodata/v3/geotable/delete"; }
package com.bugyun.main; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; import org.apache.http.Consts; import org.apache.http.message.BasicNameValuePair; import com.bugyun.constant.RequestArgsConstant; import com.bugyun.constant.RequestURLConstant; import com.bugyun.util.HttpClientUtil; public class ApplicationEntry { public static void main(String[] args) { // 位置数据表(geotable)的创建 Map<String, String> map = new HashMap<>(); map.put(RequestArgsConstant.AK.SERVER.getKey(), RequestArgsConstant.AK.SERVER.getValue()); map.put("name","geotableCreateOne"); map.put("geotype", "1"); map.put("is_published", "1"); String createStr = HttpClientUtil.doPost(RequestURLConstant.GEOTABLE_CREATE, Consts.UTF_8.toString(), map); System.out.println(createStr); // 位置数据表(geotable)的查询 // BasicNameValuePair bnvpOne = new BasicNameValuePair(RequestArgsConstant.AK.SERVER.getKey(), RequestArgsConstant.AK.SERVER.getValue()); // BasicNameValuePair bnvpTwo = new BasicNameValuePair("name", "geotableCreateOne"); // String getStr = HttpClientUtil.doGet(RequestURLConstant.GEOTABLE_QUERY, "UTF-8", bnvpOne, bnvpTwo); // System.out.println(getStr); // 位置数据表(geotable)的更新 // Map<String, String> updateMap = new HashMap<>(); // updateMap.put(RequestArgsConstant.AK.SERVER.getKey(), RequestArgsConstant.AK.SERVER.getValue()); // updateMap.put("name", "geotableCreateOneUpdate"); // //ID值:上面新建的ID // updateMap.put("id", "177625"); // String updateStr = HttpClientUtil.doPost(RequestURLConstant.GEOTABLE_UPDATE, Consts.UTF_8.toString(), updateMap); // System.out.println(updateStr); // 位置数据表(geotable)的删除 // Map<String, String> deleteMap = new HashMap<>(); // deleteMap.put(RequestArgsConstant.AK.SERVER.getKey(), RequestArgsConstant.AK.SERVER.getValue()); // //ID值:上面新建的ID // deleteMap.put("id", "177629"); // String deleteStr = HttpClientUtil.doPost(RequestURLConstant.GEOTABLE_DELETE, Consts.UTF_8.toString(), deleteMap); // System.out.println(deleteStr); } }
package com.bugyun.util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.apache.http.Consts; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.ParseException; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; /** * 调用第三接口请求 * @author Administrator * */ public class HttpClientUtil { /** * Get请求调用 * @param url 不含参数的URL * @param charset 字符编码(Consts类下有常量) * @param basicNameValuePair 创建basicNameValuePair(key,value)对象,参数key:url后的key, value:url等号后的值 * @return 调用URL返回结果。返回结果中字段status的值分别代表的含义为:<br>0: 成功 <br>1: 服务器内部错误 <br>2: 参数错误 <br>3: http method错误 <br>21: 此操作为批量操作 <br>22: 同步到检索失败 <br>31: 服务端加锁失败 <br>32: 服务端释放锁失败 <br>1001: 表的name重复 <br>1002: 表的数量达到了最大值 <br>1003: 表中存在poi数据,不允许删除 <br>2001: 列的key重复 <br>2002: 列的key是保留字段 <br>2003: 列的数量达到了最大值 <br>2004: 唯一索引只能创建一个 <br>2005: 更新为唯一索引失败,原poi数据中有重复 <br>2011: 排序筛选字段只能用于整数或小数类型的列 <br>2012: 排序筛选的列已经达到了最大值 <br>2021: 检索字段只能用于字符串类型的列且最大长度不能超过512个字节 <br>2022: 检索的列已经达到了最大值 <br>2031: 索引的列已经达到了最大值 <br>2041: 指定的列不存在 <br>2042: 修改max_length必须比原值大 <br>3001: 更新坐标必须包含经纬度和类型 <br>3002: 唯一索引字段存在重复 <br>3031: 上传的文件太大 <br> * */ public static String doGet(String url, String charset,BasicNameValuePair... basicNameValuePair) { CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpResponse response = null; String result = null; // 封装请求参数 List<NameValuePair> params = new ArrayList<>(); for (int i = 0; i < basicNameValuePair.length; i++) { params.add(basicNameValuePair[i]); } String str = ""; try { // 转换为键值对 str = EntityUtils.toString(new UrlEncodedFormEntity(params, charset)); // 创建Get请求 HttpGet httpGet = new HttpGet(url + "?" + str); // 执行Get请求, response = httpClient.execute(httpGet); // 看请求是否成功,这儿打印的是http状态码 // System.out.println(response.getStatusLine().getStatusCode()); // 得到响应体 HttpEntity entity = response.getEntity(); if (entity != null) { result = EntityUtils.toString(entity, charset); } } catch (ParseException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { // 消耗实体内容 if (response != null) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } // 关闭相应 丢弃http连接 if (httpClient != null) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result ; } /** * Post请求调用 * @param url 不含参数的URL * @param charset 字符编码(Consts类下有常量) * @param map 参数key:url后的key, value:url等号后的值 * @return */ @SuppressWarnings("unchecked") public static String doPost(String url, String charset , Map<String, String> map) { CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpResponse response = null ; HttpPost httpPost = null; String result = null; try { httpPost = new HttpPost(url); // 设置参数 List<NameValuePair> list = new ArrayList<NameValuePair>(); Iterator<?> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Entry<String, String> elem = (Entry<String, String>) iterator.next(); String key = elem.getKey() ; String value = elem.getValue() ; BasicNameValuePair bnvp = new BasicNameValuePair(key, value); list.add(bnvp); } if (list.size() > 0) { // 转换为键值对 UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list, charset); httpPost.setEntity(entity); } // 执行Post请求, response = httpClient.execute(httpPost); if (response != null) { // 看请求是否成功,这儿打印的是http状态码 // System.out.println(response.getStatusLine().getStatusCode()); // 得到响应体 HttpEntity resEntity = response.getEntity(); if (resEntity != null) { result = EntityUtils.toString(resEntity, charset); } } } catch (Exception ex) { ex.printStackTrace(); }finally { // 消耗实体内容 if (response != null) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } // 关闭相应 丢弃http连接 if (httpClient != null) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } }
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.bugyun</groupId> <artifactId>baiduMap</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version> </dependency> </dependencies> </project>