加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

webservice引用天气预报实例

发布时间:2020-12-16 23:38:27 所属栏目:安全 来源:网络整理
导读: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.Li
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; 
    } 
     
} 

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读