代码下载:https://download.csdn.net/download/sinat_36710456/10369688

一、说明

转载该博客中使用的天气预报的webService地址:

http://www.webxml.com.cn/WebServices/WeatherWebService.asmx

现更改为:http://www.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl

二、相关信息调用举例以及说明

1、新建一个java类:WeatherUtil.java

package com.test.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 WeatherUtil {/*** 对服务器端返回的XML文件流进行解析* * @param city 用户输入的城市名称* @return          字符串 用#分割*/public  String getWeather(String city) {try {//使用Dom解析Document doc;DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();dbf.setNamespaceAware(true);DocumentBuilder db = dbf.newDocumentBuilder();//获取调用接口后返回的流InputStream is = getSoapInputStream(city);doc = db.parse(is);//xml的元素标签是"<string>值1</string><string>值2</string>……"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() + "#");}is.close();return sb.toString();} catch (Exception e) {e.printStackTrace();return null;}}/** 用户把SOAP请求发送给服务器端,并返回服务器点返回的输入流* * @param city  用户输入的城市名称* @return 服务器端返回的输入流,供客户端读取* @throws Exception* @备注:有四种请求头格式1、SOAP 1.1;  2、SOAP 1.2 ; 3、HTTP GET; 4、HTTP POST* 参考---》http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?op=getWeatherbyCityName*/private  InputStream getSoapInputStream(String city) throws Exception {try {//获取请求规范String soap = getSoapRequest(city);if (soap == null) {return null;}//调用的天气预报webserviceURLURL url = new URL("http://www.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl");URLConnection conn = url.openConnection();conn.setUseCaches(false);conn.setDoInput(true);conn.setDoOutput(true);conn.setRequestProperty("Content-Length", Integer.toString(soap.length()));conn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");//调用的接口方法是“getWeatherbyCityName”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();//获取webserivce返回的流InputStream is = conn.getInputStream();return is;} catch (Exception e) {e.printStackTrace();return null;}}/** 获取SOAP的请求头,并替换其中的标志符号为用户输入的城市* * @param city: 用户输入的城市名称* @return              客户将要发送给服务器的SOAP请求规范* @备注:有四种请求头格式1、SOAP 1.1;  2、SOAP 1.2 ; 3、HTTP GET; 4、HTTP POST* 参考---》http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?op=getWeatherbyCityName* 本文采用:SOAP 1.1格式*/private  String getSoapRequest(String city) {StringBuilder sb = new StringBuilder();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();}}

注:webservice返回的xml文件如下

2、新建一个测试类:TestWeather.java

package com.util;
import com.test.util.WeatherUtil;public class TestWeather {/*** 测试*/public static void main(String[] args) throws Exception {WeatherUtil weath=new WeatherUtil();//查看城市:济南String weather=weath.getWeather("济南");String len[]=weather.split("#");for(int i=0;i<len.length-1;i++){System.out.println(len[i]);}
}

控制台打印结果:

/**
* 山东
* 济南
* 54823
* 54823.jpg
  * 2016-3-5 13:52:01
* 4℃/14℃
* 3月5日 多云转晴
* 北风3-4级转南风微风
* 1.gif
* 0.gif
* 今日天气实况:气温:12℃;风向/风力:东北风 2级;湿度:23%;紫外线强度:弱。空气质量:良。
* 紫外线指数:弱,辐射较弱,涂擦SPF12-15、PA+护肤品。
      感冒指数:极易发,强降温,湿度较大,极易感冒。
      穿衣指数:较冷,建议着厚外套加毛衣等服装。
      洗车指数:较适宜,无雨且风力较小,易保持清洁度。
      交通指数:良好,气象条件良好,车辆可以正常行驶。
空气污染指数:良,气象条件有利于空气污染物扩散。
  * 7℃/17℃
* 3月6日 多云
* 南风微风
* 1.gif
* 1.gif
* 4℃/16℃
* 3月7日 多云
* 南风微风转北风3-4级
* 1.gif
* 1.gif
*/

三、以上代码已经测试通过,可以直接根据需要改动并使用

转载:https://blog.csdn.net/high2011/article/details/49445269

java调用天气预报webservice相关推荐

  1. java调用天气预报案例

    1.(出处)http://www.cnblogs.com/jason-star/archive/2012/09/25/2702032.html 2.找了老久的.终于在'天边的星星'这位仁兄的博客发现, ...

  2. Android之ksoap2-android详解与调用天气预报Webservice完整实例

    Google为Android平台开发Web Service客户端提供了ksoap2-android项目,在这个网址下载开发包http://code.google.com/p/ksoap2-androi ...

  3. Java调用第三方webService服务

    WebService Web service是一个平台独立的.低耦合的.自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些 ...

  4. Java调用.NET webservice方法的几种方式

    最近做项目,涉及到web-service调用,现学了一个星期,现简单的做一个小结.下面实现的是对传喜物流系统(http://vip.cxcod.com/PodApi/GetPodStr.asmx?ws ...

  5. SOAPpy 调用天气预报WebService

    2019独角兽企业重金招聘Python工程师标准>>> SOAPpy 是一个很古老的库,最近的维护都是6年以前了:不知到怎么的就听说这个库了,想用这个库来入手学习WebService ...

  6. java调用天气预报的webservice

    更多面试题请狠狠的点击 下载 一.说明 天气预报的webService地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx (天 ...

  7. Java中使用SOAP的方式调用天气预报webservice的接口实例

    自己在学习webservice后,做个简单的练习,发现里面真的不是想象的那么简单,还是有好多坑的,以下就是我碰到的坑,只是记录: //1/创建服务 String wsdl="http://w ...

  8. java调用天气webservice,java调用webservice 天气预报

    public static void WeatherTest(){ try { String endpoint = "http://www.webxml.com.cn/WebServices ...

  9. java 调用.net webservice axis2_java利用axis2调用.net写的webservice,传递自定义的实体类参数...

    利用axis2可以很方便的自动生成客户端代码,同时对复杂参数类型的传递也很方便,本文的服务端以.net开发,有一个自定义的实体类作为参数,客户端用java,简单介绍一下利用axis2的wsdl2jav ...

最新文章

  1. 人工智能入门(二):语音识别基本模型
  2. 通过举例谈谈阻塞赋值与非阻塞赋值的区别
  3. 在网站SEO优化为何要加入网站地图?
  4. Linux:Swap分区
  5. css平台HTDC币,是否应该从最新的设置中应用CSS规则?
  6. 程序中 设置jvm 参数_高效应用程序的7个JVM参数
  7. 模切ERP和免费OA系统是互相结合提高效率
  8. 运行程序中的服务器错误是什么,登陆一个网站时,出现“/”应用程序中的服务器错误要怎么解决啊?? 爱问知识人...
  9. 自动劫持root密码
  10. android 手机 平板同屏,多屏互动手机与平板互相投屏
  11. 中国知网收费太贵,不妨试试这3个论文网站(大学生写论文必备)
  12. Windows11设置任务栏为小图标
  13. VBAProject调用mysql出错_VBA代码调用Access数据库系统压缩和修复数据库功能
  14. 涨知识:面试字节跳动Java研发岗,经验分享
  15. 四、Storm入门之Spout
  16. 如何将pdf修改编辑
  17. linux usb外接硬盘,在Linux系统上使用外置USB硬盘
  18. Centos之链接命令
  19. 模糊神经网络:基于模糊神经网络(Fuzzy Neural Networks,FNN)的数据分类(提供MATLAB代码)
  20. servlet 3.0 slf4j +log4j2 始终无法写入log文件的解决

热门文章

  1. shell脚本写hive代码
  2. 重新上马运十是发展我国大型飞机的最佳选择
  3. 【原创】抖音关键词搜索
  4. Python pip换源所有方法
  5. 【JavaScript】案例:分时显示不同图片,显示不同问候语
  6. 微信小程序小结之框架
  7. 脱单狗福利!每天不同时间段给女友定时给女友发消息,不错过早上起床、中午吃饭、晚上吃饭、晚安时间!...
  8. 字符串面试题系列之六:在字符串中删除特定的字符
  9. miui 9 android pay,小米9多功能NFC再升级:为了它必须升级
  10. 安卓手机如何快速把文件传输给PC端,别再用蓝牙了,用了这款软件你就会爱上它