java调用腾讯位置服务(别名:腾讯导航,腾讯地图)

该博客介绍了如何通过Spring框架的RestTemplate调用腾讯位置服务的GET接口进行导航功能的实现。首先,在腾讯位置服务控制台创建应用获取API Key。然后,引入fastjson依赖以处理JSON数据。接着,配置RestTemplate和设置超时时间。最后,展示了调用接口的代码,包括参数封装和异常处理,返回导航结果。
摘要由CSDN通过智能技术生成

因为接口是个get请求,开放式的,不需要引用什么sdk,纯调接口就行了

首先获取key!

在腾讯位置服务-》控制台-》应用管理-》我的应用-》创建应用,添加key,我使用的是webapi

https://lbs.qq.com/dev/console/application/mine

依赖辅助工具

  • 父工程依赖

要用到spring-web依赖,此处省略。。。。

    <!--json工具包,代理接口也需要,fast-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>${fastjson.version}</version>
    </dependency>
            
    <!--隔断,父工程中统一版本管理-->           
    <properties>
        <fastjson.version>1.2.47</fastjson.version>
    </properties>

  • 子工程中依赖
        <!--代理接口和json转化用着舒服-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
    </dependency>

ps:非父子工程,直接使用

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.47</version>
    </dependency>

调用接口配置类


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;

@Configuration
public class RestTemplateConfig {
    @Bean
    public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
        return new RestTemplate(factory);
    }

    @Bean
    public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
        factory.setConnectTimeout(6000);
        factory.setReadTimeout(6000);
        return factory;
    }
}

调用接口

封装的包在下边!!!!


    //调接口
    @Autowired
    private RestTemplate restTemplate;

    public Result getMapLeading(LeadingQuery query) {
        Map<String, Object> param = new HashMap<>();
        String pFrom = query.getFrom();
        String pTo = query.getTo();
        String way = query.getWay();
        String key = AllApiSecret.KEY_LEAVES;//key是自己在腾讯地图上创建获取的
        param.put("from", pFrom);
        param.put("to", pTo);
        param.put("key", key);
        String url = "https://apis.map.qq.com/ws/direction/v1/" + way + "/?from={from}&to={to}&output=json&callback=cb&key={key}";
        HttpHeaders headers = new HttpHeaders();
        headers.set(HttpHeaders.AUTHORIZATION, null);
        ResponseEntity<String> entity = null;
        Result result = new Result(ResultCode.LEADING_FAILED); //默认调用失败,后边调用成功后覆盖
        try {
            entity = restTemplate.exchange(
                    url,
                    HttpMethod.GET,
                    new HttpEntity<String>(headers),
                    String.class,
                    param);
            if (entity != null) {
                String response = JSONObject.toJSONString(entity);
                ResponseResult resultTemp = JSONObject.parseObject(response, ResponseResult.class);
                LeadingResultBody resultBody = JSONObject.parseObject(resultTemp.getBody(), LeadingResultBody.class);
                if (resultBody.getStatus().equals(0)) {
                    Object result1 = resultBody.getResult();
                    result = new Result(result1);
                }
            }
        } catch (Exception e) {
            log.info("导航调用失败,错误信息{}", e);
        }
        return result;
    }

封装的包


//ResponseResult
import lombok.Data;

@Data
public class ResponseResult {

    private String body;

    private String statusCode;

    private int statusCodeValue;
}
import lombok.Data;

import java.io.Serializable;

@Data
public class LeadingResultBody implements Serializable {

    private String message;

    private Integer status;

    private String request_id;

    private Object result;//不具体拆下去了
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值