• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

使用delphi开发多层应用(十八)使用Basic4android访问RTC服务的二进制流(照片) ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

    上次写了b4a 通过xmlrpc 访问rtc 的远程服务,有网友询问如何通过b4a 访问RTC web 的二进制流,例如如何下载

服务器上的照片,其实访问二进制流和访问字符串类似,不同的地方是,由于是通过http 协议,对于二进制流,需要先转换成

base64 编码,到客户端后再再把base64 转换回去成二进制码,就可以了。(注:由于RTC 的bug,需要RTC 6.08 以上的版本)

   RTC服务器端的代码如下:

procedure TForm1.RtcFunction3Execute(Sender: TRtcConnection;
  Param: TRtcFunctionInfo; Result: TRtcValue);
  var
mys: TRtcFileStream;

  ss:Trtchugestring;
  r:Trtcvalue;
  s:string;
begin
   r:=Trtcvalue.Create;
   mys:=TRtcFileStream.Create();
   mys.Open('d:\test.jpg');
   s:= RtcBytesToString( Mime_EncodeEx(mys.Readex(-1),True) ); // 读文件并转换成base64
   result.asstring:=s;

end;

 Basci4android 里面的代码也很简单:

Sub button2_Click
  	 
	Dim out As OutputStream
	Dim b As Base64
    
	Dim bb () As Byte
	s=XMLRPC1.stringCall("getimg",x)
	bb=b.DecodeStob(s) ' 转换回去
	out = File.OpenOutput(File.DirRootExternal, "test.jpg", False)
	out.WriteBytes(bb,0,bb.Length)
	ImageView1.Bitmap=LoadBitmap (File.DirRootExternal, "test.jpg")
	 
	 
End Sub

 服务器和客户端都运行起来,就可以在android 上显示服务器上的照片了

ok.显示正常

2013年7月18日 补记:

上面使用存储卡转换了一下,如果没有存储卡就无法跑了,现在直接在内存中转换

 

Sub button2_Click
  
	Dim s    As String 
 
	Dim b As Base64
    
	Dim bb () As Byte
	 
	Dim Bitmap1 As Bitmap 
	Dim IpSt As InputStream
	
	s=XMLRPC1.stringCall("getimg",x) 
bb=b.DecodeStob(s) ' 转换回去 IpSt.InitializeFromBytesArray(bb, 0, bb.Length) Bitmap1.Initialize2(IpSt) ImageView1.Bitmap = Bitmap1 End Sub

 

 

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap