




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JAVA全国天气预报接口调用示例代码描述:根据文档中注明的需求参数,调用接口返回数据代码平台:聚合数据 step1:选择本文所示例的接口全国天气预报接口 url:/docs/api/id/39/aid/87 step2:每个接口都需要传入一个参数key,相当于用户的令牌,所以第一步你需要申请一个keystep3:看文档!学过java的同学们都知道,当我们对一个类或者方法不明白其意图和思想时,我们可以去查看文档,这里也不例外,而且对于英文不是特别好的同学来说很幸运的是,聚合网站上的文档都是中文版本的,比起阅读java源码里的英文文档应该轻松很多.全国天气预报接口下面有六个子接口,打开第一个接口链接,看文档发现需要传入一个城市名或者城市ID参数,这个参数我们可以通过第六个子接口获取(接口之间参数的调用类似于java中方法之间的调用),即支持城市列表获取.所以示例中我们先调用这个接口.调用接口涉及到请求网络资源的问题,这里我封装了一个工具类,包含GET和POST两种方法 step4:上代码Demo1:网络访问工具类(封装get和post方法)packagejuheAPI;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.OutputStream;importjava.io.OutputStreamWriter;.HttpURLConnection;.URL;importjava.util.Map;/*网络访问工具类*authorsilk*/publicclassPureNetUtil/*get方法直接调用post方法*paramurl网络地址*return返回网络数据*/publicstaticStringget(Stringurl)returnpost(url,null);/*设定post方法获取网络资源,如果参数为null,实际上设定为get方法*paramurl网络地址*paramparam请求参数键值对*return返回读取数据*/publicstaticStringpost(Stringurl,Mapparam)HttpURLConnectionconn=null;tryURLu=newURL(url);conn=(HttpURLConnection)u.openConnection();StringBuffersb=null;if(param!=null)/如果请求参数不为空sb=newStringBuffer();/*AURLconnectioncanbeusedforinputand/oroutput.SettheDoOutput*flagtotrueifyouintendtousetheURLconnectionforoutput,*falseifnot.Thedefaultisfalse.*/默认为false,post方法需要写入参数,设定trueconn.setDoOutput(true);/设定post方法,默认getconn.setRequestMethod(POST);/获得输出流OutputStreamout=conn.getOutputStream();/对输出流封装成高级输出流BufferedWriterwriter=newBufferedWriter(newOutputStreamWriter(out);/将参数封装成键值对的形式for(Map.Entrys:param.entrySet()sb.append(s.getKey().append(=).append(s.getValue().append(&);/将参数通过输出流写入writer.write(sb.deleteCharAt(sb.toString().length()-1).toString();writer.close();/一定要关闭,不然可能出现参数不全的错误sb=null;conn.connect();/建立连接sb=newStringBuffer();/获取连接状态码intrecode=conn.getResponseCode();BufferedReaderreader=null;if(recode=200)/Returnsaninputstreamthatreadsfromthisopenconnection/从连接中获取输入流InputStreamin=conn.getInputStream();/对输入流进行封装reader=newBufferedReader(newInputStreamReader(in);Stringstr=null;sb=newStringBuffer();/从输入流中读取数据while(str=reader.readLine()!=null)sb.append(str).append(System.getProperty(line.separator);/关闭输入流reader.close();if(sb.toString().length()=0)returnnull;returnsb.toString().substring(0,sb.toString().length()-System.getProperty(line.separator).length();catch(Exceptione)e.printStackTrace();returnnull;finallyif(conn!=null)/关闭连接conn.disconnect();returnnull;Demo2:调用获取城市列表接口示例packagejuheAPI;importnet.sf.json.JSONArray;importnet.sf.json.JSONObject;/*获取城市列表*全国天气预报接口调用JAVA示例*dtypestringN返回数据格式:json或xml,默认json*keystringY你申请的key*authorsilk*/publicclassGetCityList/*调用获取城市列表接口,返回所有数据*return返回接口数据*/publicstaticStringexcute()Stringurl=/weather/citys?key=*a7558b2e0bedaa19673f74a6809ce;/接口URL/PureNetUtil是一个封装了get和post方法获取网络请求数据的工具类returnPureNetUtil.get(url);/使用get方法/*调用接口返回数据后,解析数据,根据输入城市名得到对应ID*paramcityName城市名称*return返回对应ID*/publicstaticStringgetIDBycityName(StringcityName)Stringresult=excute();/返回接口结果,得到json格式数据if(result!=null)JSONObjectobj=JSONObject.fromObject(result);result=obj.getString(resultcode);/得到返回状态码if(result!=null&result.equals(200)/200表示成功返回数据result=obj.getString(result);/得到城市列表的json格式字符串数组JSONArrayarr=JSONArray.fromObject(result);for(Objecto:arr)/对arr进行遍历/将数组中的一个json个数字符串进行解析obj=JSONObject.fromObject(o.toString();/*此时obj如id:2,province:北京,city:北京,district:海淀*/以city这个key为线索判断所需要寻找的这条记录result=obj.getString(district);/防止输入城市名不全,如苏州市输入为苏州,类似与模糊查询if(result.equals(cityName)|result.contains(cityName)result=obj.getString(id);/得到IDreturnresult;returnresult;publicstaticvoidmain(Stringargs)System.out.println(getIDBycityName(香港);Demo3:调用根据城市名/id查询天气packagejuheAPI;importnet.sf.json.JSONObject;/*根据城市名/id查询天气*authorsilk*/publicclassWeatherReportByCity/*根据城市名获取*paramcityName*return*/publicstaticStringexcute(StringcityName)Stringurl=/此处以返回json格式数据示例,所以format=2,以根据城市名称为例,cityName传入中文/weather/index?cityname=+cityName+&key=*a7558b2e0bedaa19673f74a6809ce;returnPureNetUtil.get(url);/通过工具类获取返回数据/*获取返回数据中的一个属性示例,此处以获取今日温度为例*temperature:820今日温度*paramargs*return*/publicstaticStringGetTodayTemperatureByCity(Stringcity)Stringresult=excute(city);if(result!=null)JSONObjectobj=JSONObject.fromObject(result);/*获取返回状态码*/result=obj.getString(resultcode);/*如果状态码是200说明返回数据成功*/if(result!=null&result.equals(200)result=obj.getString(result);/此时result中数据有多个key,可以对其key进行遍历,得到对个属性obj=JSONObject.fromObject(result);/今日温度对应的key是todayresult=obj.getString(today);obj=JSONObject.fromObject(result);/今日温度对应当key是temperatureresult=obj.getString(temperature);returnresult;returnresult;publicstaticvoidmain(Stringargs)System.out.println(GetTodayTemperatureByCity(苏州);Demo4:调用天气种类及表示列表接口示例packagejuheAPI;importnet.sf.json.JSONArray;importnet.sf.json.JSONObject;/*天气种类及标识列表接口调用JAVA示例*authorsilk*/publicclassGetWeatherSignAndTypeList/接口地址,因为只需要传入一个固定的key为参数,所以设为常量privatestaticfinalStringURL=/weather/uni?key=*a7558b2e0bedaa19673f74a6809ce;/*通过工具类获取数据*return*/publicstaticStringexcute()returnPureNetUtil.get(URL);/调用工具类获取接口数据/*利用遍历数组的方式获取*paramwid天气对应id*return天气名称*/publicstaticStringgetWeatherByWid(Stringwid)Stringresult=excute();/获取接口数据if(result!=null)JSONObjectobj=JSONObject.fromObject(result);result=obj.getString(resultcode);/*获取返回状态码*/if(result!=null&result.equals(200)/*获取数组数据*/result=obj.getString(result);JSONArrayarr=JSONArray.fromObject(result);for(Objecto:arr)/遍历数组obj=JSONO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 关于调酒师考试的流行饮品新趋势-试题及答案
- 2002专业设计合同范例
- 公司订立合同样本作用
- 个人兼职会计劳务合同样本
- 亚铝型材订单合同样本
- 修补房子合同标准文本
- 2025企业内部股权转让合同争议
- 简单抵押的合同范本
- 2025至2030年中国单轴自动裁切机数据监测研究报告
- 2025至2030年中国单相多功能电能表检定装置市场调查研究报告
- 重庆市高2025届高三第二次质量检测生物试卷(含答案详解)
- 院感考核系列-十、无菌技术操作考核试题及答案
- 职工诉求记录表
- 幼儿园大班社会《认识交通工具》课件
- 无人机应用技术概论-第-1-章-绪论
- 工程造价咨询服务投标方案(技术方案)
- HG∕T 2366-2015 二甲基硅油 标准
- 2024年风力发电运维值班员(技师)技能鉴定考试题库-上(选择题)
- 槟榔园出租合同范本
- 煤炭开采特种机器人的设计与制造
- 小米公司财务绩效分析
评论
0/150
提交评论