天气预报接口,精确到县级
来源:互联网 发布:双色球246红球推算法 编辑:程序博客网 时间:2024/05/01 02:54
package com.arj.comm.util;import java.io.IOException;import java.io.InputStream;import java.io.UnsupportedEncodingException;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;import java.util.ArrayList;import java.util.List;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.DOMException;import org.w3c.dom.Document;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;public class WeatherUtil { private static String SERVICES_HOST = "www.webxml.com.cn"; private static String WEATHER_SERVICES_URL = "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx/"; private static String PROVINCE_CODE_URL = WEATHER_SERVICES_URL + "getRegionProvince"; private static String CITY_CODE_URL = WEATHER_SERVICES_URL + "getSupportCityString?theRegionCode="; private static String WEATHER_QUERY_URL = WEATHER_SERVICES_URL + "getWeather?theUserID=&theCityCode="; private WeatherUtil(){} public static void main(String[] args) throws Exception{ int provinceCode = getProvinceCode("浙江"); //3119 int cityCode = getCityCode(provinceCode, "新昌"); //974 List<String> weatherList = getWeather(cityCode); for(String weather:weatherList){ System.out.println(weather); } } public static int getProvinceCode(String provinceName){ Document document; DocumentBuilderFactory documentBF = DocumentBuilderFactory.newInstance(); documentBF.setNamespaceAware(true); int provinceCode = 0; try{ DocumentBuilder documentB = documentBF.newDocumentBuilder(); InputStream inputStream = getSoapInputStream(PROVINCE_CODE_URL); //具体webService相关 document = documentB.parse(inputStream); NodeList nodeList = document.getElementsByTagName("string"); //具体webService相关 int len = nodeList.getLength(); for(int i = 0; i < len; i++){ Node n = nodeList.item(i); String result = n.getFirstChild().getNodeValue(); String[] address = result.split(","); String pName = address[0]; String pCode = address[1]; if(pName.equalsIgnoreCase(provinceName)){ provinceCode = Integer.parseInt(pCode); } } inputStream.close(); }catch(DOMException e){ e.printStackTrace(); }catch(ParserConfigurationException e){ e.printStackTrace(); }catch (SAXException e){ e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); } return provinceCode; } public static int getCityCode(int provinceCode, String cityName){ Document doc; DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setNamespaceAware(true); int cityCode = 0; try{ DocumentBuilder db = dbf.newDocumentBuilder(); InputStream is = getSoapInputStream(CITY_CODE_URL + provinceCode); //具体webService相关 doc = db.parse(is); NodeList nl = doc.getElementsByTagName("string"); //具体webService相关 int len = nl.getLength(); for(int i = 0; i < len; i++){ Node n = nl.item(i); String result = n.getFirstChild().getNodeValue(); String[] address = result.split(","); String cName = address[0]; String cCode = address[1]; if(cName.equalsIgnoreCase(cityName)){ cityCode = Integer.parseInt(cCode); } } is.close(); }catch(DOMException e){ e.printStackTrace(); }catch(ParserConfigurationException e){ e.printStackTrace(); }catch (SAXException e){ e.printStackTrace(); }catch(IOException e) { e.printStackTrace(); } return cityCode; } public static InputStream getSoapInputStream(String url){ InputStream inputStream = null; try{ URL urlObj = new URL(url); URLConnection urlConn = urlObj.openConnection(); urlConn.setRequestProperty("Host", SERVICES_HOST); //具体webService相关 urlConn.connect(); inputStream = urlConn.getInputStream(); }catch(MalformedURLException e){ e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); } return inputStream; } public static List<String> getWeather(int cityCode){ List<String> weatherList = new ArrayList<String>(); Document document; DocumentBuilderFactory documentBF = DocumentBuilderFactory.newInstance(); documentBF.setNamespaceAware(true); try{ DocumentBuilder documentB = documentBF.newDocumentBuilder(); InputStream inputStream = getSoapInputStream(WEATHER_QUERY_URL + cityCode); document = documentB.parse(inputStream); NodeList nl = document.getElementsByTagName("string"); int len = nl.getLength(); for(int i = 0; i < len; i++){ Node n = nl.item(i); String weather = n.getFirstChild().getNodeValue(); weatherList.add(weather); } inputStream.close(); }catch(UnsupportedEncodingException e){ e.printStackTrace(); }catch (DOMException e){ e.printStackTrace(); }catch (ParserConfigurationException e){ e.printStackTrace(); }catch(SAXException e){ e.printStackTrace(); } catch (IOException e){ e.printStackTrace(); } return weatherList; }}
0 0
- 天气预报接口,精确到县级
- 精确到地区的天气预报
- 天气预报接口
- 天气预报接口
- 天气预报接口
- 天气预报接口
- 天气预报接口
- 天气预报接口
- 天气预报接口
- 天气预报接口
- 天气预报接口
- 天气预报接口
- 天气预报接口
- 天气预报接口
- 天气预报接口
- 天气预报接口
- 天气预报接口
- 天气预报接口
- 编程之美 3.9 重建二叉树 扩展问题
- MyEclipse添加ibatis DTD文件实现xml的自动提示功能
- cocos2dx手写js绑定C++
- WdatePicker.js 日历点击时,触发自定义方法
- Qt多文档界面应用设计
- 天气预报接口,精确到县级
- PHP_thinkphp框架使用PHPMailer实现发送邮件的功能,以及各种问题解析
- container_of()宏
- Can't bind to local 8601 for debugger
- linux虚拟机无法ping通windows主机
- CI框架下hooks使用说明以及它的作用
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- 关于python的继承,super关键字
- 介绍一个高性能16串口转以太网模块(FPGA+W5500)