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



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

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

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

              
          }

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

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


          網站導航:
           
          主站蜘蛛池模板: 土默特右旗| 汉阴县| 安徽省| 郎溪县| 和平区| 枣庄市| 石门县| 沙田区| 甘肃省| 梅河口市| 平江县| 岑溪市| 兰西县| 保亭| 贡觉县| 繁昌县| 耿马| 蓬莱市| 平安县| 交城县| 永年县| 武城县| 香河县| 南昌县| 绿春县| 左云县| 石城县| 浮梁县| 绵阳市| 尼玛县| 谢通门县| 巴林左旗| 平原县| 长泰县| 安岳县| 双牌县| 江永县| 宝清县| 盘山县| 文安县| 瑞丽市|