Java通过HttpClient调用百度地图Demo

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

猜你喜欢

转载自bugyun.iteye.com/blog/2395912