调用高德地图,通过获取的区域名称得到行政区域详情

一、pom文件:
<?xml version="1.0" encoding="UTF-8"?>
<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.java.gaode.GaoDeDemo</groupId>
<artifactId>GaoDeDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.google.collections</groupId>
<artifactId>google-collections</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>20.0</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.8.1</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.9</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.31</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.19.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.28</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.1.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.10.RELEASE</version>
</dependency>
</dependencies>
</project>
二、HttpClientUtil工具类
package com.java.gaode;
/**
* @ClassName: HttpClientUtil
* @Description:
* @Version: v1.0.0
* @Author: Fu Hao
* @Date: 2019/10/22 0022 下午 9:32
* Modification History:
* Date Author Version Description
* -------------------------------------------------------------
* 2019/10/22 0022 Fu Hao v1.0.0 创建
*/
import com.alibaba.fastjson.JSONObject;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.core.util.MultivaluedMapImpl;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
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.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;

import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import java.io.IOException;
import java.net.URI;
import java.util.*;

/**
* @author
* @Description 请求工具类(HttpClient
* @date 2018/11/16 10:09
*/
@Controller
public class HttpClientUtil {

private static final Logger logger = LoggerFactory.getLogger(HttpClientUtil.class);

/**
* @Description 发送get请求(带参数)
* @author HeLiu
* @date 2018/11/16 11:02
*/
public static String doGet(String url, Map<String, Object> params) {
if (!StringUtils.hasText(url)) {
return "";
}
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
CloseableHttpClient closeableHttpClient = httpClientBuilder.build();
try {
if (params != null && !params.isEmpty()) {
List<NameValuePair> pairs = new ArrayList<NameValuePair>(params.size());
for (String key : params.keySet()) {
pairs.add(new BasicNameValuePair(key, params.get(key).toString()));
}
url += "?" + EntityUtils.toString(new UrlEncodedFormEntity(pairs, "UTF-8"));
}
HttpGet httpGet = new HttpGet(url);
CloseableHttpResponse response = closeableHttpClient.execute(httpGet);
HttpEntity entity = response.getEntity();
// 判断响应实体是否为空
if (entity != null) {
return EntityUtils.toString(entity, "UTF-8");
} else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 关闭流并释放资源
closeableHttpClient.close();
} catch (IOException e) {
logger.error(e.toString());
}
}
return null;
}

/**
* @Description 发送post请求(带参数)
* @author HeLiu
* @date 2018/11/16 11:02
*/
public static Map doPost(String url, Map<String, Object> param) {
try {
Client client = Client.create();
URI u = new URI(url);
WebResource resource = client.resource(u);
MultivaluedMap<String, String> params = new MultivaluedMapImpl();

Iterator i$ = param.entrySet().iterator();
while (i$.hasNext()) {
Map.Entry<String, List<String>> e = (Map.Entry) i$.next();
params.add(e.getKey(), String.valueOf(e.getValue()));
}

logger.info("查询参数:" + params.toString());
String result = resource.type(MediaType.APPLICATION_FORM_URLENCODED).post(String.class, params);

logger.info("url = :{},返回结果:{}", url, result);
JSONObject jasonObject = JSONObject.parseObject(result);
return (Map) jasonObject;

} catch (Exception e) {
logger.error("..........", e);
}
return null;
}

}

三、测试
package com.java.gaode;

import com.alibaba.fastjson.JSONObject;

import java.util.HashMap;
import java.util.Map;

/**
* gaode包里的两个方法是根据传来的值查询下一级行政区域的目录详情
* @ClassName: GaoTest
* @Description:
* @Version: v1.0.0
* @Author: Fu Hao
* @Date: 2019/10/22 0022 下午 9:30
* Modification History:
* Date Author Version Description
* -------------------------------------------------------------
* 2019/10/22 0022 Fu Hao v1.0.0 创建
*/
public class GaoTest {
public static void main(String[] args) {
String keyName = "中国";//这里是key名称
String keyCode = "高德官网申请";//这个是秘钥
String admAddress = "https://restapi.amap.com/v3/config/district";
Map<String, Object> params = new HashMap<>();

params.put("key", keyCode);
params.put("keywords", keyName);
params.put("subdistrict", 1);
params.put("extensions", "base");
String result = HttpClientUtil.doGet(admAddress, params);
System.out.println(JSONObject.parse(result));
}
}


猜你喜欢

转载自www.cnblogs.com/xiaoshenke/p/11726217.html