Flex与.Net的WebService通信
来源:互联网 发布:淘宝购买战网点 编辑:程序博客网 时间:2024/05/22 05:21
紧接上一篇文章,要用flex和.Net服务器通行,除了HttpService,还有另一种方法就是WebService
WebService的方法是基于SOAP协议的。说得简单一点就是让数据自动按照SOAP的协议转成XML传输。
类似HttpService,我们可以在flex声明一个WebService
我们看看webServiceResultHandler的代码:
WebService的方法是基于SOAP协议的。说得简单一点就是让数据自动按照SOAP的协议转成XML传输。
类似HttpService,我们可以在flex声明一个WebService
<mx:WebService id="webService"//注意id,下面要用到和HttpService有点不同。WebService需要一个mx:operation标签定义如何访问。首先name属性定义了对方服务器上用什么函数处理,你可以在C#部分的代码找到GetRoster()。由于GetRoster函数需要一个int参数,所以下面的请求内容也必须是一个int。最后result属性定义了返回结果后用webServiceResultHandler()处理。
wsdl="http://localhost/WebService/RosterWebService.asmx?wsdl">//WebService页面的地址
<mx:operation name="GetRoster" result="webServiceResultHandler(event)">//**重点
<mx:request>
<numberOfStudents>//请求的内容,和界面控件studentStepper的值绑定起来
{studentStepper.value}
</numberOfStudents>
</mx:request>
</mx:operation>
</mx:WebService>
我们看看webServiceResultHandler的代码:
private function webServiceResultHandler(event:ResultEvent):void另外例子中还有一个GetDataTable的函数,和上面的GetRoster原理一样,不在赘述
{
var result:ClassData = new ClassData();
result.ClassName = event.result.ClassName;
result.TeacherName = event.result.TeacherName;
result.TeacherID = event.result.TeacherID; varstudents:* =
as ArrayCollection;
event.result.Students;
result.Students = students
if(result.Students ==
null)
{
result.Students = new ArrayCollection([students]);
}
updateUI(result);
}
基本上和HttpService是一样的。
最后就是要一个发送函数和“发送”按钮的click事件绑定,这样当你按下发送按钮才可以发送:
private function callWebServiceClassData():void
{
webService.GetRoster.send();//注意到这个webService其实就是上面定义的那个,看id即可知
}
最后是C#的部分,页面名字叫RosterWebService.asmx,但实际这个文件没有代码,真正的代码在其后台文件RosterWebService.asmx.cs上
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Web.Services;
using FlexToNet.Data;
namespace FlexToNet.WebService
{
/// <summary>
/// Summary description for RosterWebService
/// </summary>
[WebService(Namespace = "http://www.blinemedical.com")]//注意namespace和flex上要一致
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class RosterWebService : System.Web.Services.WebService//继承WebService
{
[WebMethod]//标记为WebMethod才能够通信
public ClassData GetRoster(int numberOfStudents)
{
ClassData sampleClass = new ClassData();
sampleClass.ClassName = "Science";
sampleClass.TeacherName = "Smith";
sampleClass.TeacherID = 10;
sampleClass.Students = new List<StudentData>();
for (int i = 0; i < numberOfStudents; i++)
{
StudentData studentOne = new StudentData();
studentOne.StudentID = i + 1;
if (i % 2 == 0)
studentOne.StudentName = "Denis";
else
studentOne.StudentName = "Alexey";
sampleClass.Students.Add(studentOne);
}
return sampleClass;
}
}
}
可以看到GetRoster函数并没有任何处理网络问题的代码,仅仅是接受一个参数,然后处理之后返回一个ClassData。
关键就在于[WebMethod]标记,代替了GetRoster处理了这些事情。这是C#反射功能的一个应用的典型。
- Flex与.Net的WebService通信
- Flex与WebService通信
- Flex与webservice的通信(一)
- FLEX与.NET通信:WebService与RemoteObject连接地址的动态确定
- Flex与.NET WebService
- Flex与asp.net的WebService通讯
- Flex与asp.net的WebService通讯
- flex与.Net的socket通信
- flex与.Net的HTTPSerivce通信
- 使用自己发布的WebService与Flex通信
- flex通过webservice的框架xfire与java通信
- Flex asp.net通过webservice通信
- flex与java通信二:webService
- Flex 与asp.net通信
- Flex与ASP.Net通信
- flex 与 .net 交互【基于WebService的数据访问】
- Flex与.NET互操作 基于WebService的数据访问
- .net与java webService通信的最简单方法
- 安装trilinos(1)
- 疯狂的程序员 1
- TCP to UDP 数据转发
- UDP to TCP 数据转发
- 转:使用eclipse和subversion进行版本管理(由最新版为例)
- Flex与.Net的WebService通信
- Silverlight 2学习教程(一):开发Silverlight 2应用程序的准备工作
- 高效程序员应该养成的七个习惯
- HTML页面中嵌入CSS的方式
- 理解 Delphi 的类与接口(一) - 从结构谈起
- 理解 Delphi 的类与接口(二) - 初识类的方法
- 开张第一天
- 在ListCtrl中进行排序
- 关于爱情和婚姻偶的讨论