透过URL来获取天气预报,在jsp页面将天气显示出来
在使用这个类时,只要调用这个类的getWeather(String city)方法,参数是输入的城市名称,返回值为String类型!然后使用String的split("#")方法,就可以获取相应的天气预报的值!
哪为朋友需要图片或整个项目的请加我QQ:javaeeboy@qq.com .我会通过邮件发送给他!
哪些地方写的不好也希望看到这篇代码的朋友能不吝赐教!
谢谢!
package com.arj.comm.util; import java.io.InputStream; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.URL; import java.net.URLConnection; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class WeatherReport { /** * 获取SOAP的请求头,并替换其中的标志符号为用户输入的城市 * @param city * 用户输入的城市名称 * @return 客户将要发送给服务器的SOAP请求 */ private static String getSoapRequest(String city) { StringBuilder sb = new StringBuilder(); /*通过输入的城市生成可供请求的xml文件*/ sb .append("<?xml version=\"1.0\" encoding=\"utf-8\"?>" + "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " + "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" + "<soap:Body> <getWeatherbyCityName xmlns=\"http://WebXml.com.cn/\">" + "<theCityName>" + city + "</theCityName> </getWeatherbyCityName>" + "</soap:Body></soap:Envelope>"); return sb.toString(); } /** * 用户把SOAP请求发送给服务器端,并返回服务器点返回的输入流 * @param city * 用户输入的城市名称 * @return 服务器端返回的输入流,供客户端读取 * @throws Exception */ private static InputStream getSoapInputStream(String city) throws Exception { try { String soap = getSoapRequest(city);//获取请求的xml if (soap == null) { return null; } /*获取天气预报的频道*/ URL url = new URL( "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx"); /*创建连接对象*/ URLConnection conn = url.openConnection(); //连接时忽略文档缓存 conn.setUseCaches(false); /*因为使用URL连接,所以下面两个设置为true*/ conn.setDoInput(true); conn.setDoOutput(true); // 设置一般请求属性,请求的长度 conn.setRequestProperty("Content-Length", Integer.toString(soap .length())); //请求的类型 conn.setRequestProperty("Content-Type", "text/xml; charset=utf-8"); //请求的协议 conn.setRequestProperty("SOAPAction", "http://WebXml.com.cn/getWeatherbyCityName"); //创建输出字节流 OutputStream os = conn.getOutputStream(); //把输出字节流转换为输出字符流 OutputStreamWriter osw = new OutputStreamWriter(os, "utf-8"); osw.write(soap); osw.flush(); osw.close(); //创建输入流,把输出流转换为输入流输出 InputStream is = conn.getInputStream(); return is; } catch (Exception e) { e.printStackTrace(); return null; } } /** * 对服务器端返回的XML进行解析 * @param city * 用户输入的城市名称 * @return 字符串 用,分割 */ public static String getWeather(String city) { try { Document doc; DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setNamespaceAware(true); DocumentBuilder db = dbf.newDocumentBuilder(); InputStream is = getSoapInputStream(city);//获取输入字节流 doc = db.parse(is);//解析xml文件 NodeList nl = doc.getElementsByTagName("string"); StringBuffer sb = new StringBuffer(); for (int count = 0; count < nl.getLength(); count++) { Node n = nl.item(count); if(n.getFirstChild().getNodeValue().equals("查询结果为空!")) { sb = new StringBuffer("#") ; break ; } sb.append(n.getFirstChild().getNodeValue() + "#\n"); } is.close(); return sb.toString(); } catch (Exception e) { e.printStackTrace(); return null; } } }
在使用这个类时,只要调用这个类的getWeather(String city)方法,参数是输入的城市名称,返回值为String类型!然后使用String的split("#")方法,就可以获取相应的天气预报的值!
哪为朋友需要图片或整个项目的请加我QQ:javaeeboy@qq.com .我会通过邮件发送给他!
哪些地方写的不好也希望看到这篇代码的朋友能不吝赐教!
谢谢!
发表评论
-
8888888888888
2012-07-06 21:26 0public Pooled(String name) ... ... -
77777777777777
2012-07-06 21:26 0public class Pooled extends Thr ... -
444444
2012-07-06 21:25 0public void setDebug(boolean d ... -
33333
2012-07-06 21:25 0switch (repool.getPriority()) ... -
22222
2012-07-06 21:24 0// 初始化线程list private Threa ... -
11111
2012-07-06 21:23 0// 线程数量 private int _threadC ... -
dssds
2012-07-06 21:21 0private static ThreadPool inst ... -
wedawed
2011-05-12 19:06 177# -*- coding: UTF-8 -*- #imp ... -
asa
2011-05-12 18:50 113#任务执行状态 STATE_START = 'STATE_S ... -
asda
2010-11-28 16:32 0引用 <?xml version="1.0&q ... -
使用commons-fileupload组件上传文件
2010-10-07 21:45 1115这是使用了commons-fileupload-1.2.1.j ... -
使用servlet技术来下载文件
2010-10-06 19:56 786要下载一个文件,那么就要知道这个文件mime类型,所以要先把你 ... -
使用dom4j操作xml文件
2010-10-06 19:44 1662第一种,使用dom4j生成一个xml文件 package ... -
制作美观的验证码图片
2010-10-06 19:36 1004package pic.util; import jav ... -
使用oreilly上传组件上传文件
2010-10-06 19:30 671public class fileOreilly ex ... -
MD5加密
2010-10-06 19:20 887经过MD5加密后,得到16位的16进制数 public ... -
使用javaMail组件来发送邮件
2010-10-06 19:10 1240为大家介绍javaMail组件的使用,首先是发送普通的邮件 ...
相关推荐
asp.net 调用天气预报接口实现天气查寻源码
JAVA天气预报接口,使用中国天气网,气象数据开放平台的接口,比较稳定,官方说法是腾讯百度都是用他们的。。这个是根据城市ID进行查询的。
Spring Boot项目:使用第三方天气API接口实现天气预报功能;使用redis缓存数据库进行数据缓存 接口示例:http://t.weather.sojson.com/api/weather/city/101010100
asp.net 调用天气预报接口实现天气查寻,查寻三天的天气情况
通过调用天气预报接口来获得天气数据,用LIstView和GridView来搭建每个界面,将查询的天气信息存储在SQLiteDatabase中。应用主要包括了五大界面,每一个界面上都会有很多组件: - 首页面:有各种组件装饰,显示天气...
2023最新ajax请求第三方接口天气预报案例.docx2023最新ajax请求第三方接口天气预报案例.docx2023最新ajax请求第三方接口天气预报案例.docx2023最新ajax请求第三方接口天气预报案例.docx2023最新ajax请求第三方接口...
用android代码实现天气预报接口,在手机上显示天气预报情况,
微信小程序简单天气预报查询系统,利用API接口实现天气预报的调用查询,需要自己去设置request,在微信公众开发平台里面设置白名单。 天气接口api 地址:http://wthrcdn.etouch.cn/weather_mini?city=城市名称 不得...
实现 NowAPI(http://www.nowapi.com) 的 天气预报 接口 ,使用 java开发 ,用于 Android。 不完善之处,还请大家不吝赐教。
实现天气预报查询,有天气预报接口,实现天气预报查询,有天气预报接口,
Android实现天气预报功能。超级简单。实现百度地图接口就OK.
该项目虽然虽小,但对新手来说应该有一个新例的作用吧。希望对你们有用。
微信小程序利用中国天气网接口实现天气预报
详细讲解天气预报实现全过程、免费接口、有图、有代码、有解析。
百度天气接口实现 天气预报 免费资源 可更改城市名完成近3天天气查询
用java代码调用weather的webservice,实现天气预报功能
通过c#接口访问天气预报网,从而实现各个地区天气的查询
使用javascript+mui开发的一款手机天气预报app,提供关注城市管理和便签功能!
这几天突发奇想,突然想自己写一个js跨域访问天气的接口然后实现天气预报功能的小例子 但是jquery跨域访问的时候出现了点问题 上csdn上晃悠了一大圈发现大多是答非所问 不少东西花积分下载之后 例子里面根本就只提供...
基于App Inventor积木式编程API调用的设计与实现——以天气预报APP为例.pdf