flash与通过xml与asp.net沟通
2006-08-20 01:26
204 查看
1、xpath4as
xpath4as2是xfactorstudio提供的一个as2扩展类,支持xpth1.0。
到http://www.xfactorstudio.com/ActionScript/AS2/XPath/XPath4AS2.zip下载xpath4as2的最新版本,解压后放到\Macromedia\Flash 8\zh_cn\First Run\Classes下,重新启动flash即可.
xfactorstudio还提供了一个XmlDataSet类,可以提高处理效率。
下载:http://www.xfactorstudio.com/Actionscript/AS2/XmlDataSet/XmlDataSet.zip
2、flash中的as:
flash的sendAndLoad方法很有意思,他将传送的xml数据作为一个form请求发送出去。例如下面发送的xml片断:
<login methodName=\"login\" username=\"Admin\" password=\"111111\" />
和下面这样的请求是一样的:
Request.Form.allKeys[0]="login methodName";
Request.Form[0].toString=\"login\" username=\"Admin\" password=\"111111\";
也就是在form中提交了一个名为login methodName的键值对。
XPathAxes.stringValue是一个静态方法,用来获得指定的node类型数组的所有文本值。
XPath.selectNodes也是一个静态方法,有两个参数,参数1指定了xpath查询的内容(xmlNode),参数2是一个xpth查询字符串,该方法返回了符合指定条件的node数组。
import com.xfactorstudio.xml.xpath.*;
var targetURL:String="http://localhost/xxir/WebForm.aspx";
XML.prototype.ignoreWhite = true;
var AXML:XML = new XML();
AXML.onLoad =AXMLOnLoad;
function AXMLOnLoad(success:Boolean) {
if (success) {
var nd=XPathAxes.stringValue(XPath.selectNodes(this,"/adminOP/UserName")[0]);
trace(nd);
} else {
trace("connectionFailed");
}
}
this.login_btn.onPress=function(){
var QXML:XML = new XML();
// 创建要发送到服务器的 XML 格式的数据
var QEmn:XMLNode = QXML.createElement("QParam");
QEmn.attributes.methodName="login";
QEmn.attributes.username = "Admin";
QEmn.attributes.password = "11111";
QXML.appendChild(QEmn);
// 将 XML 格式的数据发送到服务器
QXML.sendAndLoad(targetURL, AXML);
}
上面的代码很常规,发送的请求是这样的:
<QParam password="11111" username="Admin" methodName="login" />
获得的返回值将是这样的:
<?xml version="1.0"?>
<adminOP xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ID>
1
</ID>
<AdminName>
admin
</AdminName>
<UserName>
admin
</UserName>
<Password>
111111
</Password>
<Purview>
1
</Purview>
<LastLoginIP>
127.0.0.1
</LastLoginIP>
<LastLoginTime>
2005-10-10T07:22:22.0000000+08:00
</LastLoginTime>
<LastLogoutTime>
2005-10-10T08:22:00.0000000+08:00
</LastLogoutTime>
<LoginTimes>
2
</LoginTimes>
<RndPassword>
11111ddff
</RndPassword>
<EnableMultiLogin>
false
</EnableMultiLogin>
<AdminPurview_Article>
0
</AdminPurview_Article>
<AdminPurview_Soft>
0
</AdminPurview_Soft>
<AdminPurview_Photo>
0
</AdminPurview_Photo>
<AdminPurview_Shop>
0
</AdminPurview_Shop>
<AdminPurview_Others>
0-0-0
</AdminPurview_Others>
<arrClass_View>
0-0-0
</arrClass_View>
<arrClass_Input>
0-0-0
</arrClass_Input>
<arrClass_Check>
0-0-0
</arrClass_Check>
<arrClass_Manage>
0-0-0
</arrClass_Manage>
</adminOP>
3、asp.net处理请求和回发
首先将处理请求,返回一个XmlNode类型的值,如下:
private XmlNode getRequestXML(){
int vals = Request.TotalBytes;
byte[] bytes = Request.BinaryRead(vals);
string strContent = System.Text.Encoding.UTF8.GetString(bytes);
XmlDocument doc=new XmlDocument();
doc.LoadXml(strContent);
return doc.FirstChild;
}
然后根据请求,处理回发,这里使用了一个序列化的类adminOP,返回XmlDocument,代码如下:
private XmlDocument adminlogin(XmlNode xnd){
adminOP OP=new adminOP(xnd.Attributes["username"].Value);
XmlSerializer ops = new XmlSerializer(typeof(adminOP));
System.IO.MemoryStream bs=new MemoryStream(100);
ops.Serialize(bs,OP);
bs.Position=0;
XmlDocument doc=new XmlDocument(bs);
doc.Load(xtr);
return doc;
}
将获得序列化后的adminOP类的实例写入Response:
Response.Write(adminlogin(getRequestXML()).OuterXml);
this.Response.Flush();
最后注意在@ Page中加入contentType="text/xml"指示。
aspx.cs的代码如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
namespace akscnClaw
{
public class WebForm : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
Response.Write(adminlogin(getRequestXML()).OuterXml);
this.Response.Flush();
}
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
//获得XML格式的请求
private XmlNode getRequestXML(){
int vals = Request.TotalBytes;
byte[] bytes = Request.BinaryRead(vals);
string strContent = System.Text.Encoding.UTF8.GetString(bytes);
XmlDocument doc=new XmlDocument();
doc.LoadXml(strContent);
return doc.FirstChild;
}
//序列化输出结果
private XmlDocument adminlogin(XmlNode xnd){
adminOP OP=new adminOP(xnd.Attributes["username"].Value);
XmlSerializer ops = new XmlSerializer(typeof(adminOP));
System.IO.MemoryStream bs=new MemoryStream(100);
ops.Serialize(bs,OP);
bs.Position=0;
XmlDocument doc=new XmlDocument(bs);
doc.Load(xtr);
return doc;
}
}
}
xpath4as2是xfactorstudio提供的一个as2扩展类,支持xpth1.0。
到http://www.xfactorstudio.com/ActionScript/AS2/XPath/XPath4AS2.zip下载xpath4as2的最新版本,解压后放到\Macromedia\Flash 8\zh_cn\First Run\Classes下,重新启动flash即可.
xfactorstudio还提供了一个XmlDataSet类,可以提高处理效率。
下载:http://www.xfactorstudio.com/Actionscript/AS2/XmlDataSet/XmlDataSet.zip
2、flash中的as:
flash的sendAndLoad方法很有意思,他将传送的xml数据作为一个form请求发送出去。例如下面发送的xml片断:
<login methodName=\"login\" username=\"Admin\" password=\"111111\" />
和下面这样的请求是一样的:
Request.Form.allKeys[0]="login methodName";
Request.Form[0].toString=\"login\" username=\"Admin\" password=\"111111\";
也就是在form中提交了一个名为login methodName的键值对。
XPathAxes.stringValue是一个静态方法,用来获得指定的node类型数组的所有文本值。
XPath.selectNodes也是一个静态方法,有两个参数,参数1指定了xpath查询的内容(xmlNode),参数2是一个xpth查询字符串,该方法返回了符合指定条件的node数组。
import com.xfactorstudio.xml.xpath.*;
var targetURL:String="http://localhost/xxir/WebForm.aspx";
XML.prototype.ignoreWhite = true;
var AXML:XML = new XML();
AXML.onLoad =AXMLOnLoad;
function AXMLOnLoad(success:Boolean) {
if (success) {
var nd=XPathAxes.stringValue(XPath.selectNodes(this,"/adminOP/UserName")[0]);
trace(nd);
} else {
trace("connectionFailed");
}
}
this.login_btn.onPress=function(){
var QXML:XML = new XML();
// 创建要发送到服务器的 XML 格式的数据
var QEmn:XMLNode = QXML.createElement("QParam");
QEmn.attributes.methodName="login";
QEmn.attributes.username = "Admin";
QEmn.attributes.password = "11111";
QXML.appendChild(QEmn);
// 将 XML 格式的数据发送到服务器
QXML.sendAndLoad(targetURL, AXML);
}
上面的代码很常规,发送的请求是这样的:
<QParam password="11111" username="Admin" methodName="login" />
获得的返回值将是这样的:
<?xml version="1.0"?>
<adminOP xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ID>
1
</ID>
<AdminName>
admin
</AdminName>
<UserName>
admin
</UserName>
<Password>
111111
</Password>
<Purview>
1
</Purview>
<LastLoginIP>
127.0.0.1
</LastLoginIP>
<LastLoginTime>
2005-10-10T07:22:22.0000000+08:00
</LastLoginTime>
<LastLogoutTime>
2005-10-10T08:22:00.0000000+08:00
</LastLogoutTime>
<LoginTimes>
2
</LoginTimes>
<RndPassword>
11111ddff
</RndPassword>
<EnableMultiLogin>
false
</EnableMultiLogin>
<AdminPurview_Article>
0
</AdminPurview_Article>
<AdminPurview_Soft>
0
</AdminPurview_Soft>
<AdminPurview_Photo>
0
</AdminPurview_Photo>
<AdminPurview_Shop>
0
</AdminPurview_Shop>
<AdminPurview_Others>
0-0-0
</AdminPurview_Others>
<arrClass_View>
0-0-0
</arrClass_View>
<arrClass_Input>
0-0-0
</arrClass_Input>
<arrClass_Check>
0-0-0
</arrClass_Check>
<arrClass_Manage>
0-0-0
</arrClass_Manage>
</adminOP>
3、asp.net处理请求和回发
首先将处理请求,返回一个XmlNode类型的值,如下:
private XmlNode getRequestXML(){
int vals = Request.TotalBytes;
byte[] bytes = Request.BinaryRead(vals);
string strContent = System.Text.Encoding.UTF8.GetString(bytes);
XmlDocument doc=new XmlDocument();
doc.LoadXml(strContent);
return doc.FirstChild;
}
然后根据请求,处理回发,这里使用了一个序列化的类adminOP,返回XmlDocument,代码如下:
private XmlDocument adminlogin(XmlNode xnd){
adminOP OP=new adminOP(xnd.Attributes["username"].Value);
XmlSerializer ops = new XmlSerializer(typeof(adminOP));
System.IO.MemoryStream bs=new MemoryStream(100);
ops.Serialize(bs,OP);
bs.Position=0;
XmlDocument doc=new XmlDocument(bs);
doc.Load(xtr);
return doc;
}
将获得序列化后的adminOP类的实例写入Response:
Response.Write(adminlogin(getRequestXML()).OuterXml);
this.Response.Flush();
最后注意在@ Page中加入contentType="text/xml"指示。
aspx.cs的代码如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
namespace akscnClaw
{
public class WebForm : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
Response.Write(adminlogin(getRequestXML()).OuterXml);
this.Response.Flush();
}
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
//获得XML格式的请求
private XmlNode getRequestXML(){
int vals = Request.TotalBytes;
byte[] bytes = Request.BinaryRead(vals);
string strContent = System.Text.Encoding.UTF8.GetString(bytes);
XmlDocument doc=new XmlDocument();
doc.LoadXml(strContent);
return doc.FirstChild;
}
//序列化输出结果
private XmlDocument adminlogin(XmlNode xnd){
adminOP OP=new adminOP(xnd.Attributes["username"].Value);
XmlSerializer ops = new XmlSerializer(typeof(adminOP));
System.IO.MemoryStream bs=new MemoryStream(100);
ops.Serialize(bs,OP);
bs.Position=0;
XmlDocument doc=new XmlDocument(bs);
doc.Load(xtr);
return doc;
}
}
}
相关文章推荐
- ASP.NET Web API 如何通过程序控制返回xml还是json
- 通过asp.net 生成xml文件
- Flash(AS3)与通过asp.net连接数据库,AS3连接数据库
- asp.net+xml+flash实现的图片展示效果示例
- 通过Flash实现ASP.NET多文件上传
- 【转载】战速决Flash ActionScript 3.0 - 以文本形式、XML形式和JSON形式与ASP.NET通信续
- ASP.NET Web API 通过参数控制返回类型(JSON|XML)
- Flash ActionScript 3.0 通过asp.net 访问 数据库
- 通过Flash实现ASP.NET多文件上传
- asp/php/.net/+flash+XML的动态曲线图/饼状图/矩形图(转)
- FLASH+XML+ASP.Net轮换广告源代码
- 通过ASP.net实现flash对数据库的访问
- Flash Asp.net XML
- asp.net通过xsl把xml转化为xhtml
- asp.net通过xsl把xml转化为xhtml
- ASP.NET通过http/https的POST方式,发送和接受XML文件内容
- 通过Flash实现ASP.NET多文件上传
- Flash ActionScript 3.0 通过asp.net 访问 数据库