互聯網上面有很多的免費webService服務,我們可以調用這些免費的WebService服務,將一些其他網站的內容信息集成到我們的Web應用中顯示。
一:調用免費的web service獲取天氣預報信息
1.第三方服務地址
http://ws.webxml.com.cn/WebServices/WeatherWS.asmx
原來的地址因爲第三方要收費所以沒用了(http://www.webxml.com.cn/WebServices/WeatherWebService.asmx )
http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl
2.生成本地java代碼(藉助wsimport命令工具自動生成客戶端代碼)
打開命令行窗口,切換到項目的src目錄,執行"wsimport -keep http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl"生成客戶端代碼,如下圖所示:
運行結果顯示,使用wsimport工具直接生成客戶端代碼會拋異常, 無法生成客戶端代碼, 只是因爲我們要調用的WebService是用.net寫的,這個是Java調用net的webservice都有的問題,這個問題的解決辦法如下:
1、將對應的wsdl文檔保存到本地
2、修改wsdl文檔的部分內容:將 <s:element ref="s:schema" /><s:any /> 替換成 <s:any minOccurs="2" maxOccurs="2"/>
3、再次執行wsimport生成代碼,這次使用保存在本地的WeatherWS.wsdl文件來進行生成,如下圖所示:
注意:生成代碼的過程中雖然有警告,但可以不必理會,沒有報錯,說明代碼生成成功了。
從執行結果顯示,這一次可以正常生成代碼了,刷新一下src目錄,就可以看到生成的代碼了
3.藉助生成的代碼編寫請求代碼
package com.example.demo;
import new_src.cn.com.webxml.ArrayOfString;
import new_src.cn.com.webxml.WeatherWS;
import new_src.cn.com.webxml.WeatherWSSoap;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
/**
* Created by sjgtw-zzr on 2020/4/16.
*/
@SpringBootTest
public class WeatherWSClientNew {
public static void main(String[] args) {
WeatherWS factory = new WeatherWS();
WeatherWSSoap weatherWSSoap = factory
.getWeatherWSSoap();
ArrayOfString weatherInfo = weatherWSSoap.getSupportCityString("311101");
List<String> lstWeatherInfo = weatherInfo.getString();
for (String string : lstWeatherInfo) {
System.out.println(string);
System.out.println("------------------------");
}
}
}
測試結果:
北京,792
------------------------
昌平,785
------------------------
大興,826
------------------------
房山,827
------------------------
懷柔,752
------------------------
門頭溝,788
------------------------
密雲,751
------------------------
平谷,756
------------------------
順義,741
------------------------
通州,3409
------------------------
延慶,746
------------------------
海淀,742
------------------------
朝陽,3408
------------------------
豐臺,795
------------------------
石景山,794
------------------------
以上,就是一個完整的第三方的webservice服務的調用的實例。