`

初学FLEX做的小练习(三)-数据服务(FLEX与WebService的通信)

 
阅读更多

六、FLEX与WebService的通信,

在MyEclipse新建一个Web Service Project,MyEclipse5.5自己就会建立一个用XFire实现WEB SERVICE的工程。

1)新建接口文件IWeather.java

package ws;

public interface IWeather {
    public String getWeatherState(String city);
}

 

2)新建实现文件Weather.java

package ws;

import java.util.HashMap;
import java.util.Map;


public class Weather implements IWeather{

    //http://localhost:8080/wsp1/services/getWeatherState?wsdl
    static Map map = new HashMap();
    static {  //输入shanghai 或beijing
        map.put("beijing","sunning");
        map.put("shanghai","cloud");
    }
    public String getWeatherState(String city){
        return (String)map.get(city);
    }
}

 

3)修改配置文件WebServices/services.xml

<?xml version="1.0" encoding="UTF-8"?>
< beans xmlns="http://xfire.codehaus.org/config/1.0">
  <service>
    <name>getWeatherState</name><!-- 服务名称 -->
    <namespace>ws/getWeatherState</namespace><!-- 指定命名空间 -->
    <serviceClass>ws.IWeather</serviceClass><!-- 指定服务的接口 -->
    <implementationClass>ws.Weather</implementationClass><!-- 指定接口的实现类 -->
  </service>
< /beans>

Web Services Project工程目录纵览。

 

七、部署,测试

启动TOMCAT6,并如下图部署WEB SERVICE工程wsp1到TOMCAT上,

浏览器里输入http://localhost:8080/wsp1/services/getWeatherState?wsdl,测试下,如果出现XML格式的,就OK。

七、与Web Service通信的FLEX部分

1)src/ui/dp/ws.mxml

<?xml version="1.0" encoding="utf-8"?>
< mx:Canvas xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx" width="100%" height="100%">
 
    <fx:Declarations>
        <!-- 将非可视元素(例如服务、值对象)放在此处 -->
    
     <mx:WebService id="ws1" wsdl="http://localhost:8080/wsp1/services/getWeatherState?wsdl"> <!--声明一个WebService对象ws1,指明WSDL路径-->
        
         <mx:operation name="getWeatherState" result="showInfo(event)" fault="Alert.show('error');">
            
            
         </mx:operation>
     </mx:WebService>
    </fx:Declarations>
    <fx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.rpc.events.ResultEvent;
            import mx.rpc.events.FaultEvent;
            
            function showInfo(event:ResultEvent):void{
                mx.controls.Alert.show(event.result.toString());
            }
            
            function getWeather():void{
                ws1.getWeatherState(ti.text);
            }
        ]]>
    </fx:Script>
    <mx:Panel width="100%" height="100%">
        <mx:TextInput text="" id="ti"/>
        <mx:Button label="getWeatherstate" click="getWeather()" /><!--在TextInput里输入shanghai 或beijing,点击按钮调用Web Service的方法ws1.getWeatherState()-->
    </mx:Panel>
    
< /mx:Canvas>

 

 

相关工程代码请下载 http://download.csdn.net/detail/iamyzs/4284826

 

http://blog.csdn.net/iamyzs/article/details/7541582

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics