使用delphi 开发多层应用(二十) ios通过soap 显示kbmmw服务器上的图片

简介: 上一次通过soap,使IOS 访问了kbmmw服务器,今天顺便看能不能与android 共用服务器上的那个 下载图片的功能。首先说一下服务端的的程序,基本上就是前面的代码,没有变化,只是要indy 里面的 base64 编码功能,不再啰嗦,直接代码: function Txalionsrv.

    上一次通过soap,使IOS 访问了kbmmw服务器,今天顺便看能不能与android 共用服务器上的那个

下载图片的功能。首先说一下服务端的的程序,基本上就是前面的代码,没有变化,只是要indy 里面的

base64 编码功能,不再啰嗦,直接代码:

function Txalionsrv.Performgetimgm(ClientIdent: TkbmMWClientIdentity;
  const Args: array of Variant): Variant;
var
    fs:TMemoryStream;
    filename:string;
    base64:pansichar;
    i:integer;
    flen,bsize:int64;
    b64:TIdencoderMIME;
begin
 filename:='D:\picture\'+args[0];

  if not FileExists(filename) then
     begin
       kbmMWRaiseServerException('文件不存在!');
       exit;
     end;

  fs:=TMemoryStream.Create;
  b64:=TIdEncoderMIME.Create();
  try
   fs.LoadFromFile(filename);
   result:=b64.EncodeStream(fs)
 finally
    fs.Free;
    b64.Free;
  end;
end;

客户端为了显示图片,改变了一下界面

增加了一个Timage 控件,和一个显示按钮

把soap 调用整理成一个公共过程:

function remoterequest(ip,servicename,funcname:string;v:Variant;var StatusText:string;var vout:Variant):integer;

   var
   server:IProcessRequestSOAPPort;
   req:ProcessRequest;
   res:TkbmMWSOAPResponse;

begin
    result:=-1;
      server:=GetIProcessRequestSOAPPort(false,
            'http://'+ip+'/server1',nil);
            req:=ProcessRequest.Create;
         try
          // Setup request.
                  req.ServiceName:=servicename;//'XALION_SRV';
                  req.ServiceVersion:='';
                  req.StateID:=-1;
                  req.Func:=funcname;//'sumall';


                 // Setup identity.
                 //req.Ident:=TkbmMWSOAPClientIdentity.Create;
                 //req.Ident.Username:=’HANS’;
                 //req.Ident.Password:=’somepassword’;

                  req.Args:=v;

                  // Call app server.
                  res:=server.ProcessRequest(req);
              try
            // Check response.
                  StatusText:=res.StatusText;
                  if res.StatusCode=0 then // OK
                  begin
                    result:=0;
                    vout:=res.Result;
                  end;
                finally
               res.Free;
            end;
            finally
            req.Free;
          end;
end;

 然后在按钮点击里面使用下面代码:

procedure TForm1.Button2Click(Sender: TObject);
var
   args:array[1..4] of Variant;
   ms:TMemoryStream;
  
   v,vout:variant;
   s:String;
   len,mlen:integer;

   b64:TIdDecoderMIME;

   img:Tbitmap;

begin
   v:=VarArrayCreate([0,1],varVariant);


   v[0]:='1.JPG';

  if  remoterequest(servername.Text,'XALION_SRV', 'getimgm',v,s,vout)<>0 then
     begin
       edit1.Text:='bad' ;
       exit;
     end;
   Label1.Text:=s;
   s:=vout;
   b64:= TIdDecoderMIME.Create;

  try
    ms:=TMemoryStream.Create;
   b64.DecodeStream(s,ms);
   img:=Tbitmap.CreateFromStream(ms);
   image1.Bitmap:=img;
  finally
      ms.Free;
      b64.Free;
  end;


end;

 编译,然后在mac 上ios模拟器上运行,显示下面的效果:

整体感觉,ios 的模拟器比android 的速度快多了。

 

 

 

目录
相关文章
|
1月前
|
存储 缓存 前端开发
如何优化 SSR 应用以减少服务器压力
优化SSR应用以减少服务器压力,可采用代码分割、缓存策略、数据预加载、服务端性能优化、使用CDN、SSR与SSG结合、限制并发请求、SSR与CSR平滑切换、优化前端资源及利用框架特性等策略。这些方法能有效提升性能和稳定性,同时保证用户体验。
|
2月前
|
机器学习/深度学习 人工智能 运维
企业内训|LLM大模型在服务器和IT网络运维中的应用-某日企IT运维部门
本课程是为某在华日资企业集团的IT运维部门专门定制开发的企业培训课程,本课程旨在深入探讨大型语言模型(LLM)在服务器及IT网络运维中的应用,结合当前技术趋势与行业需求,帮助学员掌握LLM如何为运维工作赋能。通过系统的理论讲解与实践操作,学员将了解LLM的基本知识、模型架构及其在实际运维场景中的应用,如日志分析、故障诊断、网络安全与性能优化等。
97 2
|
1月前
|
弹性计算 开发工具 git
2分钟在阿里云ECS控制台部署个人应用(图文示例)
作为一名程序员,我在部署托管于Github/Gitee的代码到阿里云ECS服务器时,经常遇到繁琐的手动配置问题。近期,阿里云ECS控制台推出了一键构建部署功能,简化了这一过程,支持Gitee和GitHub仓库,自动处理git、docker等安装配置,无需手动登录服务器执行命令,大大提升了部署效率。本文将详细介绍该功能的使用方法和适用场景。
2分钟在阿里云ECS控制台部署个人应用(图文示例)
|
22天前
|
开发框架 .NET PHP
网站应用项目如何选择阿里云服务器实例规格+内存+CPU+带宽+操作系统等配置
对于使用阿里云服务器的搭建网站的用户来说,面对众多可选的实例规格和配置选项,我们应该如何做出最佳选择,以最大化业务效益并控制成本,成为大家比较关注的问题,如果实例、内存、CPU、带宽等配置选择不合适,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文将详细解析企业在搭建网站应用项目时选购阿里云服务器应考虑的一些因素,以供参考。
|
1月前
|
安全 开发工具 Swift
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发。基础语法涵盖变量、常量、数据类型、运算符、控制流等,高级特性包括函数、闭包、类、结构体、协议和泛型。
30 2
|
1月前
|
存储 安全 关系型数据库
Linux系统在服务器领域的应用与优势###
本文深入探讨了Linux操作系统在服务器领域的广泛应用及其显著优势。通过分析其开源性、安全性、稳定性和高效性,揭示了为何Linux成为众多企业和开发者的首选服务器操作系统。文章还列举了Linux在服务器管理、性能优化和社区支持等方面的具体优势,为读者提供了全面而深入的理解。 ###
|
2月前
|
存储 缓存 前端开发
如何优化 SSR 应用以减少服务器压力?
如何优化 SSR 应用以减少服务器压力?
|
Java iOS开发
IOS 使用KBMMW 访问JAVA 服务
废话少说,如何使用KBMMW 做个过渡,使IOS 可以使用JAVA 的服务? 其实KBMMW 本身就要java service 的服务,但是为了把这个问题说清楚,我手工做一个例子。   首先,要使用JAVA 服务,JRE 是肯定要安装的。
1093 0
|
1月前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
9天前
|
iOS开发 开发者 MacOS
深入探索iOS开发中的SwiftUI框架
【10月更文挑战第21天】 本文将带领读者深入了解Apple最新推出的SwiftUI框架,这一革命性的用户界面构建工具为iOS开发者提供了一种声明式、高效且直观的方式来创建复杂的用户界面。通过分析SwiftUI的核心概念、主要特性以及在实际项目中的应用示例,我们将展示如何利用SwiftUI简化UI代码,提高开发效率,并保持应用程序的高性能和响应性。无论你是iOS开发的新手还是有经验的开发者,本文都将为你提供宝贵的见解和实用的指导。
92 66