WebService调用天气接口

原创 2018年04月17日 17:31:00


20多个常用的免费WebService接口:https://blog.csdn.net/qq_20545159/article/details/47903513

工具类:

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;
}
// 调用的天气预报webserviceURL
URL url = new URL("http://www.webxml.com.cn/WebServices/WeatherWebService.asmx");
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\"?>"
+ "<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
+ "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" "
+ "xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">"
+ "<soap12:Body>"
+"<getWeatherbyCityName xmlns=\"http://WebXml.com.cn/\"><theCityName>" 
+ city
+ "</theCityName></getWeatherbyCityName>" 
+ "</soap12:Body></soap12:Envelope>");
return sb.toString();
}

}


测试类:

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; i++) {
System.out.println(len[i]);
}
}
}

ASP.NET WebService调试

-
  • 1970年01月01日 08:00

webservice接口调用天气预报例程

  • 2016年12月23日 09:40
  • 73KB
  • 下载

利用WebService调用天气接口

由于最近项目需要用到实时天气查询,于是就想起来使用webService来获取天气接口。但是在使用的过程中,遇到了各种坑,这里稍微整理下 先给出项目文件结构 首先在百度上找到了webServ...
  • qq_32039567
  • qq_32039567
  • 2017-06-20 10:07:55
  • 4502

webservice通信调用天气预报接口实例

一:环境搭建 1:新建一个java project工程weatherInf 2:引入相应的jar包 activation.jar axis-ant.jar axis.jar c...
  • Sky786905664
  • Sky786905664
  • 2016-12-08 11:56:01
  • 1476

webService学习7:调用天气接口

1 参考  webService学习3:客户端生成webservice代码 生成客户端代码 2 在wsdl中搜索 wsdl:service入口类 3 代码编写   package ...
  • jianfpeng241241
  • jianfpeng241241
  • 2016-06-10 17:20:28
  • 1100

WebService调用天气接口例子

刚接触WebService,写的不是很好,有问题或者错误的地方还请指教= =  一、生成client端的java class文件 调用这个URL的接口:http://webservice.webxml...
  • NK_TF
  • NK_TF
  • 2016-02-21 14:42:56
  • 6229

C#调用webService实现天气查询

  • 2012年12月10日 14:27
  • 219KB
  • 下载

webService之天气接口

webService之调用天气接口 步骤 1 : 创建一个Java项目 步骤 2 : 调用网上的一个接口 步骤 3 : 找到一个天气接口 步骤 4 : 查看天气接口的wsdl文件 步骤 5...
  • yang307511977
  • yang307511977
  • 2016-07-01 19:21:23
  • 1455

webService调用天气接口遇见的问题

(1)无法读取WSDL文件 也就是说这个网址是错误的,先拿网址在浏览器上打开一下,确保没错。 错的话换一个,我图片上这个是错的 http://www.webxml.com.cn/WebServi...
  • nihaoa50
  • nihaoa50
  • 2017-02-28 21:32:16
  • 1110

使用WebService调用天气预报

搜索:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx这个网址是天气预报服务的webservice1.      引入web服务引...
  • wenshui147258
  • wenshui147258
  • 2018-04-15 01:24:42
  • 94
收藏助手
不良信息举报
您举报文章:WebService调用天气接口
举报原因:
原因补充:

(最多只允许输入30个字)