百度Web api通过定位获取当前城市的天气预报

前言:
写本篇文章是为连续调用web api 的应用说明。

连续请求在很多App中都经常会被使用,例如通过定位获得当前定位城市的天气预报,我们首先要通过Android为我们提供的Api调用GPS获得我们当前的经纬度,然后将经纬度转换成具体的城市名称,再将城市名称传入获取天气预报的请求中。

附上百度web 接口说明

百度地图web服务api

使用百度的对外开放的web api
百度地图Web服务API为开发者提供http接口,即开发者通过http形式发起检索请求,获取返回json或xml格式的检索数据。用户可以基于此开发JavaScript、C#、C++、Java等语言的地图应用。
在此使用到了百度的Geocoding Api

百度web Geocoding API

Geocoding API 是一类接口,用于提供从地址到经纬度坐标或者从经纬度坐标到地址的转换服务,用户可以使用C# 、C++、Java等开发语言发送请求且接收JSON、XML的返回数据。

image.png

json示例:
http://api.map.baidu.com/geocoder/v2/?callback=renderReverse&location=39.983424,116.322987&output=json&pois=1&ak=您的ak
如:

http://api.map.baidu.com/geocoder/v2/?callback=renderReverse&location=39.983424,116.322987&output=json&pois=1&ak=zUCOoHeth4BDeasrlkiGsTuHNeEfizxA

返回结果:{“status”:102,”message”:”MCODE参数不存在,mobile类型mcode参数必需”}


image.png

原因是必须传入mcode。 mcode参数就是安全码,SHA1+包名

image.png

http://api.map.baidu.com/geocoder/v2/?callback=renderReverse&location=39.983424,116.322987&output=json&pois=1&ak=zUCOoHeth4BDeasrlkiGsTuHNeEfizxA&mcode=DB:92:E3:B4:54:9E:68:60:47:DD:0B:8A:75:3D:DA:E1:AB:91:DD:FB;czg.baidumapsdk.demo

image.png

反Geocoding车联网API

前面的web api 放回的数据太复杂,后来有发现了这个api

image.png

http://api.map.baidu.com/telematics/v3/reverseGeocoding?location=116.3017193083,40.050743859593&coord_type=gcj02&output=json&ak=zUCOoHeth4BDeasrlkiGsTuHNeEfizxA&mcode=DB:92:E3:B4:54:9E:68:60:47:DD:0B:8A:75:3D:DA:E1:AB:91:DD:FB;czg.baidumapsdk.demo

百度web 天气查询api

image.png
image.png

调用的例子
http://api.map.baidu.com/telematics/v3/weather?location=%E5%8C%97%E4%BA%AC&output=json&ak=zUCOoHeth4BDeasrlkiGsTuHNeEfizxA&mcode=DB:92:E3:B4:54:9E:68:60:47:DD:0B:8A:75:3D:DA:E1:AB:91:DD:FB;czg.baidumapsdk.demo

image.png

碰到的其他问题

在apk中调用发现错误(浏览器中调用正常)

{"status":220,"message":"APP Referer校验失败"}

我在android apk中调用百度的web api老是报错
错误内容是:{"status":220,"message":"APP Referer校验失败"}
在pc浏览器中调用正常;在手机浏览器中调用也正常,就是在android 的app中调用老师报错,求解答

网友解答
只有该白名单中的网站才能成功发起调用
格式:.mysite.com,myapp.com 多个域名之间请用英文半角逗号隔开
如果不想对任何域名做限制,设置为英文半角星号*
新申请的Mobile类型的ak与新申请的Browser类型的ak不再支持云存储接口的访问,如要使用云存储,请申请server类型ak

结果无论申请服务类型还是browser 类型都报错
{"status":240,"message":"APP 服务被禁用"}

参考

百度地图 逆/地址解析 demo

LBS控制服务返回码定义及常见问题汇总

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,584评论 19 139
  • 1.登录百度ak申请: http://lbsyun.baidu.com/apiconsole/key 2.实现天气...
    smileNicky阅读 5,072评论 0 2
  • 当今技术定位的方式,有位置信息来源定位,IP定位,GPS定位,WIFI定位,手机定位和自定义定位。本文通过获取经纬...
    dovlie阅读 11,399评论 0 8
  • 第十三章 投资之后 作为活跃天使投资人管理你的投资组合并提供增值服务 监管你的公司 将你的投资组合当成一个整体来看...
    文露婷阅读 1,235评论 0 0
  • Direct Exchange – 处理路由键。需要将一个队列绑定到交换机上,要求该消息与一个特定的路由键完全匹配...
    爱吃红色西红阅读 3,604评论 0 0