用WebService呼叫第三方天氣介面

weixin_34279579發表於2018-08-31

先放上介面呼叫地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx

  • 新建一個普通的java專案get_weather_demo2
    專案最終結構如下圖:
    7096793-0f7f070bedd1815b.png
    最終目錄結構
wsimport -keep -p demo.cyj.service -verbose http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl

這時卻報錯了,報錯如下圖:


7096793-3362f41538eb02db.png
報錯資訊
  • 經過一番百度上的搜尋和尋找,終於大概知道了錯誤原因,解決方案:
    引用自love小仙的部落格
    按照解決方案中所說,瀏覽器地址改為http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl,將網頁上的字元全部複製下來放到本地的一個文字文件中,將文中出現過的兩處
    <s:element ref="s:schema" /> <s:any />
    全部替換為<s:any minOccurs="2" maxOccurs="2" />
    然後檔案儲存為weather.wsdl
  • 開啟cmd命令列,進入本專案的src資料夾下,按照格式:
wsimport -s . yourpath/weather.wsdl

輸入命令列,比如我的存放地址:

E:\eclipseOxygenWorkspace\get_weather_demo\src\demo\cyj\weather_test\weather.wsdl

我的命令列就為

wsimport -s . E:\eclipseOxygenWorkspace\get_weather_demo\src\demo\cyj\weather_test\weather.wsdl
7096793-7e6911c8a22a9c46.png
成功的命令列

這個時候就可以看到,多了一個包,裡面有很多java檔案。

  • 新建一個測試類WeatherTest.java
package demo.cyj.test;

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

public class WeatherTest {
    public static void main(String[] args) {
        WeatherWebService factory = new WeatherWebService();
        WeatherWebServiceSoap weatherWebServiceSoap = factory.getWeatherWebServiceSoap();
        ArrayOfString strArray = null;
        strArray = weatherWebServiceSoap.getWeatherbyCityName("成都");
        System.out.println(strArray.getString());
    }   
}

跑起來,可以看到控制檯列印:


7096793-fdb72844e94c8692.png
控制檯資訊

相關文章