JAVA調用第三方webservice應用實例

互聯網上面有很多的免費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服務的調用的實例。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章