zoukankan      html  css  js  c++  java
  • 用RO调用jave6的webservice

    用RO调用jave6的webservice

    java6自带webservice开发功能非常便利。那么用d调用又如何。其实也非常简单。 这里体现懒汉的优势,用ro service builder 直接生成如下:

    unit SignLibrary_Intf;
    
    {----------------------------------------------------------------------------}
    { This unit was automatically generated by the RemObjects SDK after reading  }
    { the RODL file associated with this project .                               }
    {                                                                            }
    { Do not modify this unit manually, or your changes will be lost when this   }
    { unit is regenerated the next time you compile the project.                 }
    {----------------------------------------------------------------------------}
    
    {$I RemObjects.inc}
    
    interface
    
    uses
      {vcl:} Classes, TypInfo,
      {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf;
    
    const
      { Library ID }
      LibraryUID = '{B0D81C3E-ADEA-40CC-8F17-9D8669D4FBDF}';
      WSDLLocation = 'http://192.168.1.78:8080/lavasoft.ServiceServer?wsdl';
      TargetNamespace = 'http://lavasoft/';
    
      { Service Interface ID's }
      IServiceServerService_IID : TGUID = '{4160302F-5F1E-4424-89E8-950285727951}';
      ServiceServerService_EndPointURI = 'http://192.168.1.78:8080/lavasoft.ServiceServer';
    
    type
      TSeekOrigin = Classes.TSeekOrigin; // fake declaration
      { Forward declarations }
      IServiceServerService = interface;
    
    
      { IServiceServerService }
      IServiceServerService = interface
        ['{4160302F-5F1E-4424-89E8-950285727951}']
        function doSomething(const doSomething: UnicodeString): UnicodeString;
      end;
    
      { CoServiceServerService }
      CoServiceServerService = class
        class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IServiceServerService;
      end;
    
      { TServiceServerService_Proxy }
      TServiceServerService_Proxy = class(TROProxy, IServiceServerService)
      protected
        function __GetInterfaceName:string; override;
    
        function doSomething(const doSomething: UnicodeString): UnicodeString;
      end;
    
    implementation
    
    uses
      {vcl:} SysUtils,
      {RemObjects:} uROEventRepository, uROSerializer, uRORes;
    
    { CoServiceServerService }
    
    class function CoServiceServerService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IServiceServerService;
    begin
      Result := TServiceServerService_Proxy.Create(aMessage, aTransportChannel);
    end;
    
    { TServiceServerService_Proxy }
    
    function TServiceServerService_Proxy.__GetInterfaceName:string;
    begin
      Result := 'ServiceServerService';
    end;
    
    function TServiceServerService_Proxy.doSomething(const doSomething: UnicodeString): UnicodeString;
    var
      lMessage: IROMessage;
      lTransportChannel: IROTransportChannel;
    begin
      lMessage := __GetMessage;
      lTransportChannel := __TransportChannel;
        lMessage.SetAttributes(lTransportChannel, ['InputImportedFromUrl', 'Location', 'OutputImportedFromUrl', 'SoapActionIsEmpty', 'SOAPInputNameOverride', 'SOAPOutputNameOverride', 'TargetNamespace'
          , 'Type', 'Use', 'Wsdl'], 
          ['lavasoft.ServiceServer?xsd=1', 'http://192.168.1.78:8080/lavasoft.ServiceServer', 'lavasoft.ServiceServer?xsd=1', '1', 'doSomething', 'doSomethingResponse', TargetNamespace
          , 'SOAP', 'literal', WSDLLocation]);
      try
        lMessage.InitializeRequestMessage(lTransportChannel, 'SignLibrary', __InterfaceName, 'doSomething');
        lMessage.Write('doSomething', TypeInfo(UnicodeString), doSomething, []);
        lMessage.Finalize;
    
        lTransportChannel.Dispatch(lMessage);
    
        lMessage.Read('return', TypeInfo(UnicodeString), Result, []);
      finally
        lMessage.UnsetAttributes(lTransportChannel);
        lMessage.FreeStream;
        lMessage := nil;
        lTransportChannel := nil;
      end;
    end;
    
    initialization
      RegisterProxyClass(IServiceServerService_IID, TServiceServerService_Proxy);
    
    
    finalization
      UnregisterProxyClass(IServiceServerService_IID);
    
    
    end.
    

      

    =================

    看调用:

    procedure TForm1.Button2Click(Sender: TObject);
    var
      myCoServiceServerService : IServiceServerService;
    begin
      myCoServiceServerService := CoServiceServerService.Create(ROSOAPMessage1,ROWinInetHTTPChannel1);
      edt1.Text := myCoServiceServerService.doSomething('12312');
    end;

    procedure TForm1.Button2Click(Sender: TObject); var myCoServiceServerService : IServiceServerService; begin myCoServiceServerService := CoServiceServerService.Create(ROSOAPMessage1,ROWinInetHTTPChannel1); edt1.Text := myCoServiceServerService.doSomething('12312'); end;

    ====================

    结果如下 :

    爽吧!

    爽极了!

  • 相关阅读:
    Git工作中用法(Gitlab)
    面试记录,不定时更新中。。。
    webservice 技术改进
    HTTP详解
    Git学习05 --分支管理02
    Git学习04 --分支管理
    链表判环问题
    k-选取问题
    图片与字符串(base64编码)的转化
    二叉堆与堆排序的简单实现
  • 原文地址:https://www.cnblogs.com/usegear/p/2803742.html
Copyright © 2011-2022 走看看