分類  >  Web前端 >

WebService處理.net中Dataset有關問題解決方法(轉)

tags:    時間:2013-12-10 19:36:23
WebService處理.net中Dataset問題解決辦法(轉)

前段日子看到了一個提供WEB服務的網站-www.webxml.com.cn.它提供各種適用的Web服務。如天氣預報、火車時刻表。

 

 

 

 

 

 

 

 

 

於是就通過它提供的介面,實驗了一下,看看它提供的那些介面有什麼效果。但是因為是免費用戶,所以每次訪問的次數有限制,所以只是測試一下。

但是你需要從WSDL文檔中生成客戶端支持代碼,可以使用axis的wsdl2java:

%AXIS2_HOME%\bin\wsdl2java -uri http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl -p client -s -o stub

其中-url參數指定了wsdl文件的路徑,可以是本地路徑,也可以是網路路徑。-p參數指定了生成的Java類的包名,-o參數指定了生成的一系列文件保存的根目錄。

在執行完上面的命令后,讀者就會發現在當前目錄下多了個stub目錄,在."stub"src"client目錄可以找到一個SimpleServiceStub.java文件,該文件複雜調用WebService

可以在程序中直接使用這個類。

 

我用了好幾個服務,火車,天氣,城市代碼等。

先貼我的pojo,pojo需要和它提供的入口的屬性一致,代碼如下:

 Train.java

 

Java代碼 
  1. package com.jushi.pojo;  
  2.   
  3. public class Train {  
  4.   
  5.     private String trainStation;  
  6.     private String arriveTime;  
  7.     private String startTime;  
  8.     private String km;  
  9.       
  10.     private String firstStation;  
  11.     private String lastStation;  
  12.     private String trainCode;  
  13.     private String startStation;  
  14.     private String arriveStation;  
  15.     private String useDate;  
  16.       
  17.     public String getTrainStation() {  
  18.         return trainStation;  
  19.     }  
  20.     public void setTrainStation(String trainStation) {  
  21.         this.trainStation = trainStation;  
  22.     }  
  23.     public String getArriveTime() {  
  24.         return arriveTime;  
  25.     }  
  26.     public void setArriveTime(String arriveTime) {  
  27.         this.arriveTime = arriveTime;  
  28.     }  
  29.     public String getStartTime() {  
  30.         return startTime;  
  31.     }  
  32.     public void setStartTime(String startTime) {  
  33.         this.startTime = startTime;  
  34.     }  
  35.     public String getKm() {  
  36.         return km;  
  37.     }  
  38.     public void setKm(String km) {  
  39.         this.km = km;  
  40.     }  
  41.     public String getFirstStation() {  
  42.         return firstStation;  
  43.     }  
  44.     public void setFirstStation(String firstStation) {  
  45.         this.firstStation = firstStation;  
  46.     }  
  47.     public String getLastStation() {  
  48.         return lastStation;  
  49.     }  
  50.     public void setLastStation(String lastStation) {  
  51.         this.lastStation = lastStation;  
  52.     }  
  53.     public String getTrainCode() {  
  54.         return trainCode;  
  55.     }  
  56.     public void setTrainCode(String trainCode) {  
  57.         this.trainCode = trainCode;  
  58.     }  
  59.     public String getStartStation() {  
  60.         return startStation;  
  61.     }  
  62.     public void setStartStation(String startStation) {  
  63.         this.startStation = startStation;  
  64.     }  
  65.     public String getArriveStation() {  
  66.         return arriveStation;  
  67.     }  
  68.     public void setArriveStation(String arriveStation) {  
  69.         this.arriveStation = arriveStation;  
  70.     }  
  71.     public String getUseDate() {  
  72.         return useDate;  
  73.     }  
  74.     public void setUseDate(String useDate) {  
  75.         this.useDate = useDate;  
  76.     }  
  77.       
  78. }  

 

 

City.java

 

Java代碼 
  1. package com.jushi.pojo;  
  2.   
  3. public class City {  
  4.       
  5.     private String cityId;  
  6.     private String cityName;  
  7.     public String getCityId() {  
  8.         return cityId;  
  9.     }  
  10.     public void setCityId(String cityId) {  
  11.         this.cityId = cityId;  
  12.     }  
  13.     public String getCityName() {  
  14.         return cityName;  
  15.     }  
  16.     public void setCityName(String cityName) {  
  17.         this.cityName = cityName;  
  18.     }  
  19. }  

  

 

接下來就是業務了。我們需要將它返回的數據集處理成我們需要的結果,所以用到了jdom。

 代碼如下:

TrainInfo.java

 

Java代碼 
  1. package com.jushi.service;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileInputStream;  
  5. import java.io.FileWriter;  
  6. import java.io.IOException;  
  7. import java.util.ArrayList;  
  8. import java.util.List;  
  9.   
  10. import org.apache.axis.message.MessageElement;  
  11. import org.jdom.Document;  
  12. import org.jdom.Element;  
  13. import org.jdom.input.SAXBuilder;  
  14.   
  15. import cn.com.WebXml.GetDetailInfoByTrainCodeResponseGetDetailInfoByTrainCodeResult;  
  16. import cn.com.WebXml.GetStationAndTimeByStationNameResponseGetStationAndTimeByStationNameResult;  
  17. import cn.com.WebXml.TrainTimeWebServiceLocator;  
  18. import cn.com.WebXml.TrainTimeWebServiceSoap;  
  19.   
  20. import com.jushi.pojo.Train;  
  21.   
  22. public class TrainInfo {  
  23.   
  24.     //通過車次得到列車信息   
  25.     public ArrayList getInfo(String traincode){  
  26.         ArrayList trainlist = null;  
  27.         try{  
  28.             java.net.URLEncoder.encode("參數","UTF-8");  
  29.             TrainTimeWebServiceLocator service = new TrainTimeWebServiceLocator();  
  30.             TrainTimeWebServiceSoap client = service.getTrainTimeWebServiceSoap();  
  31.             GetDetailInfoByTrainCodeResponseGetDetailInfoByTrainCodeResult traininfo =  
  32.                 client.getDetailInfoByTrainCode(traincode, "");//後面的是我新註冊的userID: eb01f699583d44d4bdee0ed47c0397d5  
  33.             MessageElement[] msg = traininfo.get_any();  
  34.             List elementHead = msg[0].getChildren();//消息頭,DataSet對象  
  35.             List elementBody = msg[1].getChildren();//消息體信息,DataSet對象  
  36.             if(elementBody.size()<=0){  
  37.                 return null;  
  38.             }  
  39.             String str = elementBody.get(0).toString();//消息體的字元串形式  
  40.             saveXMLString(str,"train.xml");  
  41.             trainlist = loadXML("train.xml");  
  42.               
  43.         }catch(Exception e){  
  44.             e.printStackTrace();  
  45.         }  
  46.         return trainlist;  
  47.     }  
  48.       
  49.     public static void saveXMLString(String xmlString,String filename) throws IOException{  
  50.             File file = new File(filename);  
  51.             if(file.exists()){  
  52.                 file.delete();  
  53.             }         
  54.             file.createNewFile();  
  55.             if(file.canWrite()){  
  56.                 FileWriter out = new FileWriter(file);  
  57.                 out.write(xmlString);  
  58. border-left: #d1d7dc 1px solid; padding-bottom: 0px; line-height: 18px; background-color: #fafafa; margin: 0px 0px 0px 38px; padding-

推薦閱讀文章

Bookmark the permalink ,來源:互聯網