Delphi Xe DataSnap Rest + Flex 开发 基本探索6(flex 前台 Post 字节流 参数)

在看本文章前请 参考前面的文章

这篇文章 介绍 flex 如何 在调用delphi datasnap 的Rest服务过程中以 大量的数据为参数 (字节流 )

该方法 在网络上 基本没有资料,废掉了我无数的脑细胞啊,再次 bs emb 帮助太操蛋了

首先 大量的数据不能通过前面的方式 直接写在Rest 地址的后面.

我用了http post 方法

效果如下

这是flex 前台传输到后代的 字节码,后台代码如下

function TSMTest.updateSetBytes(stream:TJSONObject): string;
var
  i:integer;
begin

  FrmMain.Memo1.Lines.Add('jsonValue:'+(stream.ToString));
end;

主要 是参数为Tjsonobject

前台 主要是传输了一个 jpg的图片

前台代码如下

var fileReference:FileReference = new FileReference();  
			protected function btnUpLoad_clickHandler(event:MouseEvent):void
			{
				
			
		    fileReference.addEventListener(Event.SELECT, onSelect);   
			fileReference.addEventListener(Event.COMPLETE,onComplete);  
			//urlRequest = new URLRequest("http://localhost:8666/Ashx/FileHandler.ashx");
			
			browse();
			}
			
			private function onSelect(evt:Event):void{  
				labstate.text="文件:"+fileReference.name+"      "+"大小:"+fileReference.size+"字节";  
				fileReference.load();  
			}  
			private function onComplete(evt:Event):void{  
				imgUpload.source=fileReference.data; 				
				var read :ReadDataFromServer = new ReadDataFromServer();
				read.onLoadComplete = onBytesParam;
				
				var barr:ByteArray= fileReference.data;
				
				barr.position =0;
				var  arr:Array = new Array();
				for(var i:int=0;i<barr.length;i++){				   
					arr.push(barr.readUnsignedByte());				
				}
				var ubArr:ByteArray = new ByteArray();
				for( i=0;i<arr.length;i++){				   
					ubArr.writeUnsignedInt(arr[i]);				
				}
				 
                				
				var str :String ='{"Array":['+ JSON.encode(arr)+"]}";			
				read.PostJson('datasnap/rest/TSMTest/SetBytes',str);	
				///
				
			}  
			public function onBytesParam(e:Event):void{
			
			
			
			}
			private function browse():void{  
				var imageTypes:FileFilter = new FileFilter("图片 (*.jpg, *.jpeg, *.gif, *.png)", "*.jpg; *.jpeg; *.gif; *.png");  
				var allTypes:Array = new Array(imageTypes);  
				try  
				{  
					fileReference.browse(allTypes);  
				}  
				catch(e:Error)  
				{  
					Alert.show(e.message+"&&"+e.getStackTrace());  
				}  
			}  

注意
'datasnap/rest/TSMTest/SetBytes'
这个方法,后台必须 在方法名 加上 update 这个头,不知道为什么....

哎摸索上面的方法,真是不容易啊,,再次bs emb 为啥 资料不搞详细点,李维老师的 datasnap 实战 的书籍 中的介绍也 感觉很粗糙......希望李老师能再出几本精品的书籍啊.....



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Delphi XE 11 中开发 DataSnap REST 应用程序,可以按照以下步骤进行操作: 1. 打开 Delphi XE 11 IDE,创建一个新项目。 2. 在项目中添加一个 DataSnap 服务器模块(DataSnap Server Module)。 3. 在 DataSnap 服务器模块中添加一个 REST 应用程序(REST Application)。 4. 在 REST 应用程序中添加所需的 REST 方法(REST Methods)。 5. 配置 DataSnap 服务器的端口号和地址,并启动 DataSnap 服务器。 具体操作步骤如下: 1. 打开 Delphi XE 11 IDE,选择“文件”->“新建”->“其他”->“DataSnap Server”->“DataSnap Server Module”,然后单击“确定”按钮。 2. 在 DataSnap 服务器模块中,选择“文件”->“新建”->“其他”->“DataSnap Server”->“REST Application”,然后单击“确定”按钮。 3. 在 REST 应用程序中,选择“文件”->“新建”->“其他”->“DataSnap Server”->“REST Method”,然后单击“确定”按钮。在“REST Method Wizard”对话框中,输入方法名称和参数,然后单击“完成”按钮。 4. 在 REST 应用程序中,可以添加多个 REST 方法,以实现不同的功能。 5. 在 DataSnap 服务器模块中,设置端口号和地址。可以在“DataSnap Server Wizard”对话框中进行设置。然后单击“启动”按钮,启动 DataSnap 服务器。 完成上述步骤后,就可以使用 DataSnap REST 应用程序提供的 REST 方法,实现数据的传输和交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值