c#与php合并开发,FLEX 与旧有开发语言(C#PHP,JAVA)之间的通信方法

以下介绍几种最为常见和实用的FLEX与现有开发语言通信的方法:

1.C#

2.PHP

3.JAVA

1.Flex与C#通信(.net开发中常用)

Flex端代码:

public static function SendMessage(objXML:XML,objResultHandle:Function):void

{

var objHttpService:HTTPService = new HTTPService();

objHttpService.url = "http://localhost:8085/upfiledata.aspx

";   //发送到的C#页面

objHttpService.resultFormat = "e4x";

objHttpService.addEventListener(ResultEvent.RESULT,objResultHandle);

objHttpService.method = "POST";

objHttpService.contentType = "application/xml";

objHttpService.send(objXML);  //objXML 要发送的数据

}

public function objResultHandle(evt:ResultEvent):void

{

evt   //接收到的数据

}

C#端:

protected void Page_Load(object sender, EventArgs e)

{

XmlDocument objProtocolDom = new XmlDocument();

objProtocolDom.Load(Request.InputStream);  //objProtocolDom接收来自Flex端所发送的数据流

Response.ContentType = "text/xml";

Response.Write(objResultDom.OuterXml);  //向Flex端下发数据流

}

2.Flex与php通信

Flex代码:

public function onInit():void

{

userRequest.send();

}

]]>

{username.text}{emailaddress.text}

php代码:

/* Thanks to Pete Mackie for the code below */

Define(’DATABASE_SERVER’, ’localhost’);

Define(’DATABASE_USERNAME’, ’root’);

Define(’DATABASE_PASSWORD’, ’root’);

Define(’DATABASE_NAME’, ’flextest’);

# Connect to the database

$mysqli = new mysqli(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD, DATABASE_NAME);

# Check connection

if (mysqli_connect_errno()) {

printf("MySQL connect failed: %s\n", mysqli_connect_error());

exit();

}

# Quote variable to make safe

function quote_smart($value) {

global $mysqli;

# Stripslashes

if (get_magic_quotes_gpc())

$value = stripslashes($value);

# Quote if not integer

if (!is_numeric($value))

$value = $mysqli->real_escape_string($value);

return $value;

}

if (!empty($_POST) && $_SERVER[’REQUEST_METHOD’] == ’POST’) {

if ($_POST[’emailaddress’] && $_POST[’username’]) {

# Add the user

$query = sprintf("Insert INTO users VALUES (’’, ’%s’, ’%s’)",

quote_smart($_POST[’username’]), quote_smart($_POST[’emailaddress’]));

if (!@$mysqli->query($query

)) {

printf("’flextest’ user database query insert error: %s\n", $mysqli->error);

$mysqli->close();

exit();

}

}

}

# Return a list of all the users

if (!$result=@$mysqli->query("Select

* from users")) {

printf("’flextest’ user database query select error: %s\n", $mysqli->error);

$mysqli->close();

exit();

}

$xml_return = "";

while ($user = mysqli_fetch_array($result, MYSQLI_ASSOC)) {

$xml_return .=

"".$user[’userid’]."".$user[’username’]."".$user[’emailaddress’]."\n";

}

$xml_return.= "";

$mysqli->close();

echo $xml_return;

?>

3.FLEX与JAVA之间的通信

这里介绍一种方法:使用BlazeDS实现Java和Flex通信

BlazeDS 是一个基于服务器的 Java 远程控制 (remoting) 和 Web 消息传递 (messaging)

技术,它能够使得后端的 Java 应用程序和运行在浏览器上的 Adobe Flex

应用程序相互通信。这篇文章中,我讲述一种方法(也许不是最好的)使得我能够成功地利用 BlazeDS 和 Flex 建立一个简单的程序。使用的

IDE 是 eclipse, 而并非 Flex Builder. 下面我将逐步介绍怎么实现这个简单的程序。

1. 安装 JDK 和 Tomcat, 并且实现成功配置。

2. 安装 Flex SDK. 详细请见官方文档

3. 下载 BlazeDS , 如果你使用的是 turnkey 版本(建议下载此版本)里面实际上包含了 Tomcat 服务器了。

下面介绍只安装 BlazeDS 的 web application 版本(但是仍然下载的是 Turnkey 版本)。

下载的 zip 包里面包含了:

blazeds.war: 主要的 BlazeDS war 文件,用来建立你的 BlazeDS 应用程序。

Sample.war 就是 BlazeDS 例子了。

Ds-console.war ,简单的 BlazeDS 部署管理程序。

每一个 war 程序都是独立的,假如你使用 J2EE 的 web 应用程序选项,那么你必须有一个 J2EE 应用服务器或者 servlet

容器。比如使用 Tomcat. 而且必须把刚才的三个 war 文件部署在 Tomcat_Home ( tomcat 安装目录)下的

webapps 目录下。然后重启 Tomcat 服务器,在浏览器输入: http://localhost:8080/samples

如果看到显示页面代表就成功了。如果你的应用程序需要使用 HSWLDB 数据库,那么也拷贝 .zip 文件中的 sampledb 目录到

webapps 目录下,然后启动数据库。启动方法很简单:到 sampledb 目录下,执行 startdb.bat 就可了 (windows

OS) 。 提示:可以的话,在你的 Eclipse 目录下,找到 eclipse.ini 把最大内存数改成 512.

4. ( 可选 ) 配置 Tomcat 的用户角色。即在 Tomcat_Home/conf/tomat-users.xml 添加以下语句:

Java代码

5.    利用 Eclipse 建立 Flex Project 。工程名字叫做 BlazeApp.

1144301749.png

Application Type 选择 web application, 服务器选择 J2EE. 关联 WTP, 至于代码文件保存目录自定义。 Next 。

6.设置 J2EE 服务器。

我们选择 Tomcat, 可能需要手动配置 (new) 。然后选择 flex war 文件,即我们放在 webapps 目录下的 blazeds.war.然后 next.

1144301750.png

7.   接着,默认设置,也可自定义。

1144301751.png

接着 next. 其实到这里已经完成了 project 建立.

8.   接下来你可以在 eclipse 中可以看到整个工程的所有文件以及配置。在开发之前,可能需要修改 context root

配置。点击 BlazeApp 右键,选择属性,然后见到如图 , 修改 context root 值为 BlazeApp. (默认的是

WebContent, 好像不更改也可以。自行测试 … )。

9.  创建 Java 文件。

点击 src 文件夹,然后创建 java class. 类的包为 hello, 名字为 HelloWorld.

Java代码

package  hello;

public   class  HelloWorld {

public  String sayHelloTo(String str) {

System.out.println( "Hello "  + str);

return   "Hello "  + str; }

}

package hello; public class HelloWorld {public String

sayHelloTo(String str) {System.out.println("Hello " + str); return

"Hello " + str; } }

10.   在 BlazeApp.mxml 文件中新建一个 text 和一个按钮,来显示从 HelloWorld 传回来的信息。

Xml代码

xml   version = "1.0"   encoding = "utf-8" ?>

< mx:Application   xmlns:mx = "http://www.adobe.com/2006/mxml

"   viewSourceURL = "srcview/index.html" >

< mx:Script >

import mx.rpc.events.ResultEvent;

[Bindable]

private var helloResult:String;

private function sayHelloTo():void {

ro.sayHelloTo(inputText.text);

}

private function resultHandler(event:ResultEvent):void {

helloResult = event.result as String;

} ]]>   mx:Script >

< mx:RemoteObject   id = "ro"   destination = "helloworld"   result = "resultHandler(event)"   />

< mx:HBox   width = "100%" >

< mx:TextInput   id = "inputText" />

< mx:Button   label = "Submit"   click = "sayHelloTo()" />

mx:HBox >

< mx:Label   text = "{helloResult}" />

mx:Application >

<?xml version="1.0" encoding="utf-8"?>

viewSourceURL="srcview/index.html">

[Bindable] private var helloResult:String; private function

sayHelloTo():void { ro.sayHelloTo(inputText.text); } private function

resultHandler(event:ResultEvent):void { helloResult = event.result as

String; } ]]>

destination="helloworld" result="resultHandler(event)" />

width="100%">

label="Submit" click="sayHelloTo()"/>

text="{helloResult}"/>

11.   定义 remote object 使你的 flex 程序能够调用 java 类。

首先来配置 /WEB-INF/flex/remoting-config.xml 文件,添加以下粗体部分来新增一个destionation—HelloWorld 类。

Xml代码

xml   version = "1.0"   encoding = "UTF-8" ?>

< service   id = "remoting-service"

class = "flex.messaging.services.RemotingService" >

< adapters >

< adapter-definition   id = "java-object"   class =

"flex.messaging.services.remoting.adapters.JavaAdapter"   default =

"true" />

adapters >

< default-channels >

< channel   ref = "my-amf" />

default-channels >

< STRONG > < destination   id = "helloworld" >

< properties >

< source > hello.HelloWorld source >

properties >

destination > STRONG >

service >

12. 配置结束。

然后选择 BlazeApp 项目,选择在服务器上执行。即浏览地址为: http://localhost:8080/BlazedApp/BlazedApp.html

如果你能在输入框输入字段之后,点击按钮能返回 Hello,XXX 的信息,就代表成功了。

如图:

1144301752.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值