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


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

1,在eclipse里新建一個java項目,在src里添加一個文件,命名為WeatherWebService.wsdl。

 

2,在瀏覽器中訪問地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl這個是天氣預報的webservice描述地址,復制里面的內容,注意從<wsdl:definitions 標簽開始復制一直到<wsdl:definitions標簽結束。粘貼到java項目的文件WeatherWebService.wsdl中。

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

 

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

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

 

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);
     }
  }
}

結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM