WebService共享資料的使用

楓葉梨花發表於2018-09-22

網上有WebService的共享資料,訪問http://www.webxml.com.cn/zh_cn/index.aspx即可尋找相關共享資料,不過某些資料需要收費。

這裡以天氣預報為例,記錄關於WebService的共享資料的呼叫。

1、下載檔案

訪問http://ws.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl下載檔案說明書。

2、修改下載的xml檔案

<s:element ref="s:schema" />
<s:any /> 

替換為

<s:any minOccurs="0" maxOccurs="1"/>

已經這個檔案是用.net生成,所以Java解析時不支援s:schema名稱空間,所以替換。
複製程式碼

2、生成客戶端呼叫程式碼

wsimport -s . E:\WeatherWebService.xml

生成以下Java檔案
ArrayOfString.java
DataSet.java
GetSupportCity.java
GetSupportCityResponse.java
GetSupportDataSet.java
GetSupportDataSetResponse.java
GetSupportProvince.java
GetSupportProvinceResponse.java
GetWeatherbyCityName.java
GetWeatherbyCityNamePro.java
GetWeatherbyCityNameProResponse.java
GetWeatherbyCityNameResponse.java
ObjectFactory.java
package-info.java
WeatherWebService.java
WeatherWebServiceSoap.java
複製程式碼

3、編寫客戶端呼叫程式碼

首先需要看WeatherWebService.xml確定呼叫方法

<wsdl:service name="WeatherWebService">
    <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">&lt;a href="http://www.webxml.com.cn/" target="_blank"&gt;WebXml.com.cn&lt;/a&gt; &lt;strong&gt;天氣預報 Web 服務,資料每2.5小時左右自動更新一次,準確可靠。包括 340 多箇中國主要城市和 60 多個國外主要城市三日內的天氣預報資料。&lt;/br&gt;此天氣預報Web Services請不要用於任何商業目的,若有需要請&lt;a href="http://www.webxml.com.cn/zh_cn/contact_us.aspx" target="_blank"&gt;聯絡我們&lt;/a&gt;,歡迎技術交流。 QQ:8409035&lt;br /&gt;使用本站 WEB 服務請註明或連結本站:http://www.webxml.com.cn/ 感謝大家的支援&lt;/strong&gt;!&lt;br /&gt;&lt;span style="color:#999999;"&gt;通知:天氣預報 WEB 服務如原來使用地址 http://www.onhap.com/WebServices/WeatherWebService.asmx 的,請改成現在使用的服務地址 http://www.webxml.com.cn/WebServices/WeatherWebService.asmx ,重新引用即可。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;</wsdl:documentation>
    <wsdl:port name="WeatherWebServiceSoap" binding="tns:WeatherWebServiceSoap">
      <soap:address location="http://ws.webxml.com.cn/WebServices/WeatherWebService.asmx" />
    </wsdl:port>
    <wsdl:port name="WeatherWebServiceSoap12" binding="tns:WeatherWebServiceSoap12">
      <soap12:address location="http://ws.webxml.com.cn/WebServices/WeatherWebService.asmx" />
    </wsdl:port>
    <wsdl:port name="WeatherWebServiceHttpGet" binding="tns:WeatherWebServiceHttpGet">
      <http:address location="http://ws.webxml.com.cn/WebServices/WeatherWebService.asmx" />
    </wsdl:port>
    <wsdl:port name="WeatherWebServiceHttpPost" binding="tns:WeatherWebServiceHttpPost">
      <http:address location="http://ws.webxml.com.cn/WebServices/WeatherWebService.asmx" />
    </wsdl:port>
  </wsdl:service>



<wsdl:portType name="WeatherWebServiceSoap">
    <wsdl:operation name="getSupportCity">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">&lt;br /&gt;&lt;h3&gt;查詢本天氣預報Web Services支援的國內外城市或地區資訊&lt;/h3&gt;&lt;p&gt;輸入引數:byProvinceName = 指定的洲或國內的省份,若為ALL或空則表示返回全部城市;返回資料:一個一維字串陣列 String(),結構為:城市名稱(城市程式碼)。&lt;/p&gt;&lt;br /&gt;</wsdl:documentation>
      <wsdl:input message="tns:getSupportCitySoapIn" />
      <wsdl:output message="tns:getSupportCitySoapOut" />
    </wsdl:operation>
    <wsdl:operation name="getSupportProvince">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">&lt;br /&gt;&lt;h3&gt;獲得本天氣預報Web Services支援的洲、國內外省份和城市資訊&lt;/h3&gt;&lt;p&gt;輸入引數:無; 返回資料:一個一維字串陣列 String(),內容為洲或國內省份的名稱。&lt;/p&gt;&lt;br /&gt;</wsdl:documentation>
      <wsdl:input message="tns:getSupportProvinceSoapIn" />
      <wsdl:output message="tns:getSupportProvinceSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="getSupportDataSet">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">&lt;br&gt;&lt;h3&gt;獲得本天氣預報Web Services支援的洲、國內外省份和城市資訊&lt;/h3&gt;&lt;p&gt;輸入引數:無;返回:DataSet 。DataSet.Tables(0) 為支援的洲和國內省份資料,DataSet.Tables(1) 為支援的國內外城市或地區資料。DataSet.Tables(0).Rows(i).Item("ID") 主鍵對應 DataSet.Tables(1).Rows(i).Item("ZoneID") 外來鍵。&lt;br /&gt;Tables(0):ID = ID主鍵,Zone = 支援的洲、省份;Tables(1):ID 主鍵,ZoneID = 對應Tables(0)ID的外來鍵,Area = 城市或地區,AreaCode = 城市或地區程式碼。&lt;/p&gt;&lt;br /&gt;</wsdl:documentation>
      <wsdl:input message="tns:getSupportDataSetSoapIn" />
      <wsdl:output message="tns:getSupportDataSetSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="getWeatherbyCityName">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">&lt;br&gt;&lt;h3&gt;根據城市或地區名稱查詢獲得未來三天內天氣情況、現在的天氣實況、天氣和生活指數&lt;/h3&gt;&lt;p&gt;呼叫方法如下:輸入引數:theCityName = 城市中文名稱(國外城市可用英文)或城市程式碼(不輸入預設為上海市),如:上海 或 58367,如有城市名稱重複請使用城市程式碼查詢(可通過 getSupportCity 或 getSupportDataSet 獲得);返回資料: 一個一維陣列 String(22),共有23個元素。&lt;br /&gt;String(0) 到 String(4):省份,城市,城市程式碼,城市圖片名稱,最後更新時間。String(5) 到 String(11):當天的 氣溫,概況,風向和風力,天氣趨勢開始圖片名稱(以下稱:圖示一),天氣趨勢結束圖片名稱(以下稱:圖示二),現在的天氣實況,天氣和生活指數。String(12) 到 String(16):第二天的 氣溫,概況,風向和風力,圖示一,圖示二。String(17) 到 String(21):第三天的 氣溫,概況,風向和風力,圖示一,圖示二。String(22) 被查詢的城市或地區的介紹 &lt;br /&gt;&lt;a href="http://www.webxml.com.cn/images/weather.zip"&gt;下載天氣圖示&lt;img src="http://www.webxml.com.cn/images/download_w.gif" border="0" align="absbottom" /&gt;&lt;/a&gt;(包含大、中、小尺寸) &lt;a href="http://www.webxml.com.cn/zh_cn/weather_icon.aspx" target="_blank"&gt;天氣圖例說明&lt;/a&gt; &lt;a href="http://www.webxml.com.cn/files/weather_eg.zip"&gt;呼叫此天氣預報Web Services例項下載&lt;/a&gt; (VB ASP.net 2.0)&lt;/p&gt;&lt;br /&gt;</wsdl:documentation>
      <wsdl:input message="tns:getWeatherbyCityNameSoapIn" />
      <wsdl:output message="tns:getWeatherbyCityNameSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="getWeatherbyCityNamePro">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">&lt;br&gt;&lt;h3&gt;根據城市或地區名稱查詢獲得未來三天內天氣情況、現在的天氣實況、天氣和生活指數(For商業使用者)&lt;/h3&gt;&lt;p&gt;呼叫方法同 getWeatherbyCityName,輸入引數:theUserID = 商業使用者ID&lt;/p&gt;&lt;br /&gt;</wsdl:documentation>
      <wsdl:input message="tns:getWeatherbyCityNameProSoapIn" />
      <wsdl:output message="tns:getWeatherbyCityNameProSoapOut" />
    </wsdl:operation>
  </wsdl:portType>

複製程式碼

從上述中可以知道查詢天氣可以呼叫WeatherWebServiceSoapgetWeatherbyCityName方法。

import java.util.List;

import cn.com.webxml.ArrayOfString;
import cn.com.webxml.WeatherWebService;
import cn.com.webxml.WeatherWebServiceSoap;

public class Client {

	public static void main(String[] args) {
		WeatherWebService weatherWebService = new WeatherWebService();
		WeatherWebServiceSoap weatherWebServiceSoap = weatherWebService.getWeatherWebServiceSoap();
		ArrayOfString result=weatherWebServiceSoap.getWeatherbyCityName("紹興");
		List<String> results = result.getString();
		for (String string : results) {
			System.out.println(string);
		}
	}
}
複製程式碼

4、結果

浙江
紹興
58453
58453.jpg
2018/9/22 22:06:53
21℃/25℃
9月22日 陣雨轉陰
無持續風向小於3級
3.gif
2.gif
今日天氣實況:氣溫:24℃;風向/風力:靜風 0級;溼度:94%;紫外線強度:弱。空氣質量:良。
紫外線指數:弱,輻射較弱,塗擦SPF12-15、PA+護膚品。
健臻·血糖指數:易波動,血糖易波動,注意監測。
穿衣指數:舒適,建議穿長袖襯衫單褲等服裝。
洗車指數:不宜,有雨,雨水和泥水會弄髒愛車。
空氣汙染指數:良,氣象條件有利於空氣汙染物擴散。

21℃/27℃
9月23日 陰
無持續風向小於3級
2.gif
2.gif
19℃/25℃
9月24日 多雲
無持續風向小於3級
1.gif
1.gif
紹興地處中國東南沿海,位於北緯29°14′至30°16′,東經119°53′至121°13′,東接寧波,西臨杭州,距上海232公里。總面積7901平方公里,市區面積101平方公里。“山陰道上行,如在鏡中游”以水鄉澤國聞名於世的紹興,自古為受人稱頌的旅遊勝地。1982年,被國務院公佈為全國首批二十四個歷史文化名城之一。紹興市現有對外開放的旅遊景點近200處,“悠悠鑑湖水,濃濃古越情”。紹興以其人文景觀豐富、水鄉風光秀麗、風土人情誘人而著稱於世,自古即為遊客嚮往的遊覽勝地。紹興就是這樣一座地方色彩很濃的著名水城。悠悠古纖道上,綠水晶瑩,石橋飛架,輕舟穿梭,有大小河流1900公里,橋樑4000餘座,構成典型的江南水鄉景色。東湖洞橋相映,水碧於天;五洩溪泉飛成瀑,五折方下;柯岩石景,鬼斧神工;蘭亭以王羲之的《蘭亭集序》而被稱為書法勝地;沈園則因陸游、唐琬的愛情悲劇使後來者嗟嘆不已;此外還有唐代纖道,南宋六陵,明清石拱橋以及與此相關聯的紹興風土人情,以烏蓬船、烏氈帽、烏乾菜為代表,在數千年的歷史演變中,積澱了豐富的文化內涵並呈現獨特的地方風采,令人仰慕神往。境內四季分明,氣候溼潤,光照充足,年平均溫度16.4。C,年平均降水量1300毫米。景觀:八字橋蘭亭御碑亭會稽山鏡水飛瀑流觴亭宋六陵咸亨酒店圓善園越女春曉越中名士苑周恩來紀念館蔡元培故居。

複製程式碼

上述的gif天氣圖示可以去http://ws.webxml.com.cn/WebServices/WeatherWebService.asmx下載即可。

相關文章