废话不多说,直接上代码,具体详情见附件,代码中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>