posts - 15,comments - 29,trackbacks - 0
          Axis框架來自 Apache 開放源代碼組織,它是基于JAVA語言的最新的 SOAP 規(guī)范(SOAP 1.2)和 SOAP with Attachments 規(guī)范(來自 Apache Group )的開放源代碼實現(xiàn)。下面是它的核心引擎的體系結(jié)構(gòu)圖:



          下面以 http://www.webxml.com.cn/webservices/DomesticAirline.asmx?Wsdl  航班查詢服務(wù)為例來分析開發(fā)客戶端的步驟。
          1.首先從http://ws.apache.org/axis/index.html上下載axis的程序包。

          2.運(yùn)行cmd,進(jìn)入下載包解壓后的目錄,運(yùn)行   Java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java -p client  http://www.webxml.com.cn/webservices/DomesticAirline.asmx?Wsdl  
          (其中-p是生成代碼的包名,根據(jù)需要設(shè)置)
           然后把生成的代碼拷貝到項目里面。

          3.拷貝axis里面的包到工程里面。

          4.客戶端代碼。

          public List<TicketInfo> getDomesticAirlinesTime(String startCity, String lastCity, String theDate) throws RemoteException, ServiceException {
                  DomesticAirline service 
          = new DomesticAirlineLocator();
                  GetDomesticAirlinesTimeResponseGetDomesticAirlinesTimeResult airlines;

                  airlines 
          = service.getDomesticAirlineSoap12().getDomesticAirlinesTime(startCity, lastCity,theDate, null);
              
                  MessageElement[] FOCElement 
          = airlines.get_any();
                  List FOCElementHead 
          = FOCElement[0].getChildren();//消息頭,DataSet對象    
                  List FOCElementBody = FOCElement[1].getChildren();//消息體信息,DataSet對象  

                  String nn 
          = FOCElementBody.get(0).toString();//消息體的字符串形式     
                  
                  

                  SAXReader reader 
          = new SAXReader();
                  Document document 
          = null;

                  
          try {
                      document 
          = document = DocumentHelper.parseText(nn);
                  }
           catch (Exception e) {
                      
          // TODO Auto-generated catch block
                      System.out.println(e.toString());
                  }

                  
                  
                  Element root 
          = (Element)document.getRootElement(); // 得到根元素    

                  List
          <TicketInfo> ticketInfoList = new ArrayList<TicketInfo>();
                  
          for (Object e : root.elements())
                  
          {
                      TicketInfo ticketInfo 
          = new TicketInfo();
                      Element element 
          = (Element) e;
                      ticketInfo.setAirlineCompany(element.elementText(
          "Company"));
                      ticketInfo.setFlightNumber(element.elementText(
          "AirlineCode"));
                      ticketInfo.setStartAirport(element.elementText(
          "StartDrome"));
                      ticketInfo.setEndAirport(element.elementText(
          "ArriveDrome"));
                      ticketInfo.setAirCraftType(element.elementText(
          "Mode"));
                      SimpleDateFormat  myFmt
          =new   SimpleDateFormat("HH:mm");     
                      
          try {
                          ticketInfo.setStartTime(myFmt.parse(element.elementText(
          "StartTime")));
                          ticketInfo.setEndTime(myFmt.parse(element.elementText(
          "ArriveTime")));
                      }
           catch (ParseException e1) {
                          
          // TODO Auto-generated catch block
                          e1.printStackTrace();
                      }

                      
                      ticketInfoList.add(ticketInfo);
                  }

                  
                  
          return ticketInfoList;
              }

              
          }

          本來客戶端代碼應(yīng)該是比較簡單的,但是這個例子的webservice服務(wù)端是用.net寫的,查詢后返回DataSet類型,java沒有對應(yīng)的類型,所以只能把返回后的結(jié)果用xml來解析,然后在放入java的數(shù)據(jù)對象里面。
          posted on 2008-12-04 10:04 流腥魚 閱讀(2871) 評論(0)  編輯  收藏 所屬分類: 編程教程 、java

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 美姑县| 德令哈市| 涿鹿县| 双城市| 怀宁县| 扬中市| 大田县| 桓仁| 常山县| 阿拉善左旗| 濮阳县| 青海省| 宁波市| 青阳县| 洪泽县| 临清市| 嘉祥县| 蓬安县| 渭源县| 临漳县| 综艺| 榕江县| 平舆县| 长春市| 措美县| 鹤壁市| 安平县| 囊谦县| 岳阳市| 建平县| 旬阳县| 郯城县| 新竹市| 德格县| 长丰县| 小金县| 离岛区| 徐水县| 闽侯县| 鄄城县| 团风县|