调用高德API,通过输入的地址,如省份、市、区获取经纬度 ,通过输入的经纬度,获取区域详情 - 肖申克save

xiaoshenke 2021-10-29 原文


调用高德API,通过输入的地址,如省份、市、区获取经纬度 ,通过输入的经纬度,获取区域详情

一、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>

二、HttpClientUtils工具类
package com.java.gao;

/**
* @ClassName: HttpClientUtils
* @Description:
* @Version: v1.0.0
* @Author: Fu Hao
* @Date: 2019/10/22 0022 下午 8:15
* Modification History:
* Date Author Version Description
* -------------------------------------------------------------
* 2019/10/22 0022 Fu Hao v1.0.0 创建
*/
import com.google.common.base.Function;
import com.google.common.collect.FluentIterable;
import com.google.common.collect.Lists;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NoHttpResponseException;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.*;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpRequestRetryHandler;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.config.ConnectionConfig;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.config.SocketConfig;
import org.apache.http.conn.ConnectTimeoutException;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HttpContext;
import org.apache.http.ssl.SSLContexts;
import org.apache.http.util.EntityUtils;

import javax.net.ssl.SSLException;
import javax.net.ssl.SSLHandshakeException;
import java.io.IOException;
import java.io.InterruptedIOException;
import java.net.UnknownHostException;
import java.nio.charset.CodingErrorAction;
import java.util.List;
import java.util.Map;


/**
* HttpClient工具类
*/
public class HttpClientUtils {

/**
* 连接池最大连接数
*/
private static final int MAX_TOTAL_CONNECTIONS = 4000;

/**
* 设置每个路由上的默认连接个数
*/
private static final int DEFAULT_MAX_PER_ROUTE = 200;

/**
* 请求的请求超时时间 单位:毫秒
*/
private static final int REQUEST_CONNECTION_TIMEOUT = 8 * 1000;

/**
* 请求的等待数据超时时间 单位:毫秒
*/
private static final int REQUEST_SOCKET_TIMEOUT = 8 * 1000;

/**
* 请求的连接超时时间 单位:毫秒
*/
private static final int REQUEST_CONNECTION_REQUEST_TIMEOUT = 5 * 1000;

/**
* 连接闲置多久后需要重新检测 单位:毫秒
*/
private static final int VALIDATE_AFTER_IN_ACTIVITY = 2 * 1000;

/**
* 关闭Socket时,要么发送完所有数据,要么等待多少秒后,就关闭连接,此时socket.close()是阻塞的 单位秒
*/
private static final int SOCKET_CONFIG_SO_LINGER = 60;

/**
* 接收数据的等待超时时间,即读超时时间,单位ms
*/
private static final int SOCKET_CONFIG_SO_TIMEOUT = 5 * 1000;
/**
* 重试次数
*/
private static int RETRY_COUNT = 5;
/**
* 声明为 static volatile,会迫使线程每次读取时作为一个全局变量读取
*/
private static volatile CloseableHttpClient httpClient = null;


/**
* @param uri
* @return String
* @description get请求方式
* @author: long.he01
*/
public static String doGet(String uri) {

String responseBody;
HttpGet httpGet = new HttpGet(uri);
try {
httpGet.setConfig(getRequestConfig());
responseBody = executeRequest(httpGet);
} catch (IOException e) {
throw new RuntimeException("httpclient doGet方法异常 ", e);
} finally {
httpGet.releaseConnection();
}

return responseBody;
}

/**
* @param uri
* @param params
* @return string
* @description map参数get请求, 此方法会将map参数拼接到连接地址上。
*/
public static String doGet(String uri, Map<String, String> params) {

return doGet(getGetUrlFromParams(uri, params));

}

/**
* @param uri
* @param params
* @return String
* @description 根据map
版权声明:本文为xiaoshenke原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xiaoshenke/p/11726263.html

调用高德API,通过输入的地址,如省份、市、区获取经纬度 ,通过输入的经纬度,获取区域详情 - 肖申克save的更多相关文章

  1. Hello Web API系列教程——Web API与国际化 – 粉-笔-灰

    Hello Web API系列教程——Web API与国际化 软件国际化是在软件设计和文档开发过程中,使得功能 […]...

  2. FPGA基础学习(5) — 时序约束(实践篇)

    目录 1. 理论回顾 2. 时间裕量 3. 最大延迟和最小延迟 4. 案例分析 参考文献: 距离上一篇有关时序 […]...

  3. 『嗨威说』算法设计与分析 – STL中Sort函数的实现原理初探

    本文索引目录: 一、对Sort算法实现的个人阅读体会 二、Sort算法使用的三个排序算法的优点介绍   2.1 […]...

  4. Taurus.MVC 2.3.2 :WebAPI 文档集成测试功能及附加

    前些天有网友提到了那个界面丑陋的SwaggerUI,让我想起了多年前实现的WebAPI文档未完成的功能点,于是 […]...

  5. python-关于代理IP的测试 – pu369com

    python-关于代理IP的测试 之前在网上找到代理IP和端口,填在浏览器中代理服务器设置选项中,总是不能成功 […]...

  6. AVOS Cloud 技术支持系统开源了 – gavanwanggw

    AVOS Cloud 技术支持系统开源了 非常高兴跟大家说。工单系统(技术支持系统)开源了。代码托管在了Git […]...

  7. web前端简单试题 – F-lower

    web前端简单试题 2013-10-02 09:58  F-lower  阅读(310)  评论(0)  编辑 […]...

  8. 动态规划处理diff算法 Myers Diff (正向) – Milton

    动态规划处理diff算法 Myers Diff (正向) Eugene W. Myers 在他1986年发表于 […]...

随机推荐

  1. VC.【转】采用_beginthread/_beginthreadex函数创建多线程

    https://blog.csdn.net/cbnotes/article/details/8331632   […]...

  2. Marvelous Designer 服装设计与模拟

    制作真实的角色衣服是CG动画中一项很具有挑战性的工作,是角色开发过程中非常重要的一步。它可以体现角色在故事中的 […]...

  3. 硬盘分区表知识—详解硬盘MBR

    硬盘是现在计算机上最常用的存储器之一。我们都知道,计算机之所以神奇,是因为它具有高速分析处理数据的能力。而这些 […]...

  4. Django实战-用户注册和登陆系统

    1.环境搭建和创建项目 1.环境搭建 每当我们开始一个新项目的时候,通常都会搭建一个全新、独立、隔离的项目环境 […]...

  5. windows 7 中双网卡分别接内外网的方法[网络转载]

      win7双网卡同时接内外网时, 会发生两个默认网关冲突的情况,导致两个网络都不能访问。因此解决方法就是只配 […]...

  6. 开发团队建设与管理的一些心得(一)

        在软件开发的工作中,我们都要经历团队协作这个历程,有句话说的好,“软件开发是一项目团队运动”,虽然这句 […]...

  7. 远程桌面如何复制本地文件 远程桌面拷贝电脑上的文件方法

          使用远程桌面连接访问计算机,经常遇到很多计算机无法从远程的计算机中拷贝数据文件夹或文件,让我们十分 […]...

  8. python的pandas读取excel文件中的数据

    一、读取Excel文件使用pandas的read_excel()方法,可通过文件路径直接读取。注意到,在一个excel文件中有多个sheet,因此,对excel文件的读取实际上是读取指定文件、并同时指定sheet下的数据。可以一次读取一个...

展开目录

目录导航