我是靠谱客的博主 柔弱哈密瓜,最近开发中收集的这篇文章主要介绍第三方API的简单调用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

调用高德地图(amap)的web服务API

  1. 进入网站:http://lbs.amap.com/api/webservice/summary/
    申请key

  2. 需求:根据ip地址定位和拿到定位地方的天气

这里写图片描述

  1. 应用springmvc技术,具体实现:
    (1) 导包:
    这里写图片描述

    (2) 在类似于spring.xml作用的类中配置:

@Bean
    public RestTemplate restTemplate() {
        // 使用apache hc HttpClient库来负责底层请求发送
        ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
        RestTemplate rt = new RestTemplate(requestFactory);
        //类型转换器  json 与 任何类型之间的转换
        List<HttpMessageConverter<?>> messageConverters = Arrays.asList(
                new MappingJackson2HttpMessageConverter()
        );

        rt.setMessageConverters(messageConverters);
        return rt;
    }

(3) 具体地图的service层:由于高德返回的是json格式的数据,我们接收数据是定义一个类来接收,这个类的属性与返回数据的json字段要相同。上面代码中用到了一个数据类型的转换器。

@Service
public class AmapServiceImpl implements AmapService {
    @Autowired
    private RestTemplate restTemplate;
    /*@Autowired
    private Environment env;*/
    @Override
    public AmapLocation getLocation(String ip) {
        //String key = env.getProperty("ipkey");  将key存于key.properties文件中
        String key = "c2cf7f844d01074663b4ccf33dfb2fb2";
        AmapLocation amapLocation = restTemplate.getForObject("http://restapi.amap.com/v3/ip?key={key}"
                + "&ip={ip}", AmapLocation.class,key,ip);
        return amapLocation;
        //第一个参数为 请求的地址,二个为接收的数据类型,三,四是参数的替代
    }
}

(4) 具体的天气service层:
实际代码跟上面的差不多,不同的是IP定位用的是类接收数据,因为网页上请求返回json数据只有一个层次,而天气有两个层次。
这里写图片描述

封装数据的实体类为:

public class Weather {
    private List<Content> lives;
    //Content类中为具体天气的属性
    public List<Content> getLives() {
        return lives;
    }
    public void setLives(List<Content> lives) {
        this.lives = lives;
    }
}

(5) 控制类:

@Controller
public class AmapController {
    @Autowired
    private AmapService amapService;
    @Autowired
    private WeatherService weatherService;

    @RequestMapping(method = RequestMethod.GET,value="/location")
    public String getAmapLocation(Model model,@RequestParam(required = false)String ip){
        //@RequestParam(required = false)获取页面传过来的参数,可有可无
        if(null!=ip){
            //获取地址
            AmapLocation amapLocation = amapService.getLocation(ip);
            model.addAttribute("location", amapLocation);
            model.addAttribute("ip", ip);

            //用ip定位返回的地址的adcode码来获取天气
            System.out.println(amapLocation);
            String adcode = amapLocation.getAdcode();
            System.out.println(adcode);
            Weather w = weatherService.getWeather(adcode);
            System.out.println("weather"+w);
            model.addAttribute("weather", w);
            return "amaplocation";
        }
        return "amaplocation";
    }
}

(6) 过程比较简单,得益于spring的支持。

最后

以上就是柔弱哈密瓜为你收集整理的第三方API的简单调用的全部内容,希望文章能够帮你解决第三方API的简单调用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部