`
bugyun
  • 浏览: 551304 次
社区版块
存档分类
最新评论

Java通过HttpClient调用百度地图Demo

    博客分类:
  • Java
 
阅读更多

 

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

 

分享到:
评论

相关推荐

    httpclient调用接口demo

    本demo有两个例子test是作为服务端开启的,httpclient是客户端调用的,模拟服务端的test在启动后是没有界面的,要加上id才能看到json数据,httpclient的HttpClient33.java是测试类,最后的结果是接受到一个对象。...

    HttpClient接口调用工具类(附带demo)

    HttpClient是Apache基金会开发的一个HTTP客户端库,用于在Java应用程序中执行HTTP请求。它提供了一种高效、灵活且可扩展的方式来发起HTTP请求,并处理响应。在这个工具类中,我们看到包括了Post、Get、Put和Delete四...

    java百度地图瓦片批量下载demo

    本项目“java百度地图瓦片批量下载demo”是一个示例,它展示了如何利用Java来实现百度地图的瓦片图片的批量下载。 首先,我们要理解什么是地图瓦片。地图瓦片是地图的一种分块表示方式,将整个地球表面按照一定的...

    百度LBS云存储JavaDEMO

    通过学习和实践这个JavaDEMO,开发者不仅能掌握如何在Java应用中调用百度LBS云存储API,还能提升处理网络请求、JSON数据以及错误处理等通用技能。这将有助于开发者构建更智能、更高效的地理位置相关应用。

    java调用 人脸识别接口demo

    总的来说,通过学习和实践这个"java调用人脸识别接口demo",你可以掌握如何在Java项目中集成和使用人脸识别技术,为你的应用增加强大的视觉功能。无论是安全认证、用户界面优化还是数据分析,这些知识都将对你的编程...

    机票API调用java-DEMO

    【机票API调用Java-DEMO】是一个针对Java开发者的学习示例,主要目的是演示如何在Java应用程序中调用机票查询的API服务。API(Application Programming Interface)是软件之间交互的一种方式,它允许开发者通过发送...

    http和WebService 调用接口Java代码demo

    综上所述,"http和WebService 调用接口Java代码demo"这个主题涵盖了Java通过HTTP进行接口调用的基本方法,以及Web Service的使用,特别是结合Spring Boot的场景。在实际项目中,理解并熟练运用这些技术能够帮助我们...

    HttpClient_Demo

    HttpClient是Java中用于发送HTTP请求的一个重要库,它允许开发者...HttpClient_Demo项目应包含一个或多个Java源文件,演示了上述知识点的实际应用,通过阅读和运行这些代码,可以更深入地理解HttpClient的使用方法。

    使用java的HttpClient实现多线程并发

    bleHttpClient httpClient; private static PoolingHttpClientConnectionManager cm; 静态初始化HttpClient和连接池管理器: ```java static { // 创建连接池管理器 cm = new PoolingHttpClientConnectionManager...

    SSM调用百度人脸识别demo

    在这个"SSM调用百度人脸识别demo"项目中,我们将看到如何在SSM环境中集成并调用百度的人脸识别API,以实现基于图像的人脸检测和识别功能。 首先,我们需要了解百度人脸识别服务。百度提供了开放的AI平台,其中包含...

    调用百度人脸识别API进行登录.zip

    6. **API调用**:在Java中,可以使用HttpURLConnection或者第三方库如Apache HttpClient或OkHttp来发起HTTP请求调用百度的RESTful API。调用过程中通常需要设置API密钥、访问令牌等安全参数。 7. **JSON数据交换**...

    Apache HttpClient Demo

    通过调用`execute`方法,HttpClient会发送请求并返回响应。状态码可以通过`getStatusLine().getStatusCode()`获取,响应头可以遍历`getAllHeaders()`,而响应体通常可以通过`HttpEntity`的`getContent()`方法读取。 ...

    HTTP接口间调用Demo

    本资源“HTTP接口间调用Demo”提供了一个实际的Java代码示例和详细的MD格式笔记,旨在帮助开发者更好地理解和应用HTTP接口调用。 首先,让我们了解HTTP(超文本传输协议)的基本概念。HTTP是一种应用层协议,用于在...

    Linux下海康监控JAVA源码demo

    1. **Java网络编程**:海康监控设备通常是通过网络接口进行通信的,因此Java的Socket编程是基础。开发者可能需要用到`java.net.Socket`和`java.net.ServerSocket`类来建立客户端和服务器之间的连接,发送和接收数据...

    完整版 SSM调用百度人脸识别demo.zip

    总的来说,这个SSM调用百度人脸识别的demo为开发者提供了一个实践案例,展示了如何在Java Web项目中整合第三方API,实现复杂功能。无论是对SSM框架的掌握,还是对百度人脸识别API的使用,都能从中获得宝贵的经验。...

    java,C#,php调用交通银行接口demo

    对于C#开发者,虽然没有直接提到C#的安装包,但交通银行的API应该是跨平台的,所以C#开发者同样可以参考Java版本的API文档来实现接口调用。他们需要掌握.NET Framework或者.NET Core的相关知识,以及如何使用...

    基于Springboot的Forest调用第三方API Demo

    在本文中,我们将深入探讨如何使用Spring Boot框架结合Forest、Okhttp和HttpClient这三种不同的库来调用第三方API,特别是以高德地图API为例。首先,让我们了解Spring Boot的基础知识,然后逐一分析这三个库以及它们...

    电信翼支付java版本demo

    翼支付Demo使用Java编写,这意味着开发者可以通过Java SDK来调用翼支付的API。 - 示例代码可能使用了HTTP客户端库(如Apache HttpClient或OkHttp)发送HTTP请求,处理JSON数据(如Jackson或Gson库),以及异常处理...

Global site tag (gtag.js) - Google Analytics