随机获取国际国内航班3字码城市对的方法

思路:通过访问开放航班城市查询webservice获取城市对3字码

    /**
     * 利用免费航班城市webservice获取随机城市对
     */
    public List<String> randomCity(){
        String endpoint = "http://webservice.webxml.com.cn/webservices/DomesticAirline.asmx?wsdl";
        String nameSpace = "http://WebXml.com.cn/";

        String operationName = "getDomesticCity";

        Service service = new Service();
        Call call;
        String FOCElementBody = null;
        List<String> citys = new ArrayList<String>();
        try {
            call = (Call) service.createCall();
            call.setUseSOAPAction(true);
            call.setSOAPActionURI(nameSpace + operationName);
            call.setTargetEndpointAddress(endpoint);

            call.setReturnType(org.apache.axis.encoding.XMLType.XSD_SCHEMA);
            call.setOperationName(operationName);
            Object res = (Object) call.invoke(new Object[] {});
            Schema schema = (Schema) res;
            MessageElement[] msgele = schema.get_any();
            FOCElementBody = msgele[1].getChildren().toString().replace("[", "").replace("]", "");
            
            StringReader stringReader = new StringReader(FOCElementBody);
            InputSource inputSource = new InputSource(stringReader);
            DocumentBuilderFactory docBuilderFac = DocumentBuilderFactory
                    .newInstance();
            DocumentBuilder docBuilder = docBuilderFac.newDocumentBuilder();
            Document document = docBuilder.parse(inputSource);
            Node node = document.getDocumentElement();
            NodeList temp = node.getChildNodes();
            
            for(int i=0;i<temp.getLength();i++){
                NodeList tmp = temp.item(i).getChildNodes();
                citys.add(tmp.item(2).getTextContent());
            }
            
        } catch (ServiceException e) {
            e.printStackTrace();
        } catch (RemoteException e) {
            e.printStackTrace();
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (SAXException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        String citytemp1 = citys.get(rand.nextInt(citys.size()));
        String citytemp2 = null;
        do{
            citytemp2 = citys.get(rand.nextInt(citys.size()));
        }while(citytemp1==citytemp2);
        
        citys.clear();
        citys.add(citytemp1);
        citys.add(citytemp2);
        return citys;
    }

 

posted @ 2014-02-26 16:37  虎卧荒丘  阅读(313)  评论(0编辑  收藏  举报