天天看點

利用java webservice調用天氣預報實踐

最近要和其他業務系統進行資料交換,選擇了webservice方案,于是查了一下網上的用法。首先是做一個天氣的查詢例子,看着挺簡單,可實際動手做起來發現坑很多,費了半天勁終于調通了,于是記錄下來。

1,在eclipse裡建立一個java項目,在src裡添加一個檔案,命名為WeatherWebService.wsdl。

利用java webservice調用天氣預報實踐

2,在浏覽器中通路位址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl,這個是天氣預報的webservice描述位址,複制裡面的内容,注意從<wsdl:definitions 标簽開始複制一直到<wsdl:definitions标簽結束。粘貼到java項目的檔案WeatherWebService.wsdl中。

3,此時重點來了,選中檔案,右鍵選擇web service-generate client會彈出以下視窗

利用java webservice調用天氣預報實踐

如果沒有錯誤提示直接點選Finish按鈕即可完成引用。但往往是會有一個錯誤提示無法完成

4 這時候就會自動生成引用的相關代碼:

利用java webservice調用天氣預報實踐

5 這時候就可以寫一個調用的測試代碼了,建立一個測試類,在main函數裡編寫一個得到北京天氣的測試代碼。

package cn.com.test;

import java.rmi.RemoteException;

import javax.xml.rpc.ServiceException;

import cn.com.WebXml.WeatherWebService;

import cn.com.WebXml.WeatherWebServiceLocator;

import cn.com.WebXml.WeatherWebServiceSoap;

public class TestWeathers {

   public static void main(String[] args) {

   WeatherWebService service1=new WeatherWebServiceLocator();

   WeatherWebServiceSoap serviceSoap = null;

    try {

       serviceSoap = service1.getWeatherWebServiceSoap();

    } catch (ServiceException e) {

       e.printStackTrace();

   }

    String[] cityweather = null;

    String[] city1={"北京","上海","深圳","廣州"};

     try {

         cityweather = serviceSoap.getWeatherbyCityName("北京");//不輸入預設為上海市

     } catch (RemoteException e) {

         e.printStackTrace();

    }

    for (String s : cityweather) {

        System.out.println(s);

     }

  }

}

結果:

利用java webservice調用天氣預報實踐