zoukankan      html  css  js  c++  java
  • delphi7编写客户端调用java服务器端webservice示例

    1. 首先取得java-webservice服务器端地址。我的是:http://localhost:8080/mywebservice/services/mywebservice?wsdl

    2. 然后打开delphi7,file-new-other:选择WebService选项卡,在选择WSDLImporter
    ,在弹出的界面中输入java-webservice地址。点击Next-finish.会生成一个.pas的webservice文件,

    生成的代码如下:
    Java代码 收藏代码
    // ************************************************************************ //
    // The types declared in this file were generated from data read from the
    // WSDL File described below:
    // WSDL : http://localhost:8080/mywebservice/services/mywebservice?wsdl
    // Encoding : UTF-8
    // Version : 1.0
    // (2011-7-21 10:17:02 - 1.33.2.5)
    // ************************************************************************ //

    unit mywebservice;

    interface

    uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;

    type

    // ************************************************************************ //
    // The following types, referred to in the WSDL document are not being represented
    // in this file. They are either aliases[@] of other types represented or were referred
    // to but never[!] declared in the document. The types from the latter category
    // typically map to predefined/known XML or Borland types; however, they could also
    // indicate incorrect WSDL documents that failed to declare or import a schema type.
    // ************************************************************************ //
    // !:int - "http://www.w3.org/2001/XMLSchema"
    // !:string - "http://www.w3.org/2001/XMLSchema"



    // ************************************************************************ //
    // Namespace : http://server
    // transport : http://schemas.xmlsoap.org/soap/http
    // style : document
    // binding : mywebserviceHttpBinding
    // service : mywebservice
    // port : mywebserviceHttpPort
    // URL : http://localhost:8080/mywebservice/services/mywebservice
    // ************************************************************************ //
    mywebservicePortType = interface(IInvokable)
    ['{56F18980-71B1-FAC0-BFF5-569F621A8591}']
    function add(const a: Integer; const b: Integer): Integer; stdcall;
    function sayHello(const name: WideString): WideString; stdcall;
    end;

    function GetmywebservicePortType(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): mywebservicePortType;


    implementation

    function GetmywebservicePortType(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): mywebservicePortType;
    const
    defWSDL = 'http://localhost:8080/mywebservice/services/mywebservice?wsdl';
    defURL = 'http://localhost:8080/mywebservice/services/mywebservice';
    defSvc = 'mywebservice';
    defPrt = 'mywebserviceHttpPort';
    var
    RIO: THTTPRIO;
    begin
    Result := nil;
    if (Addr = '') then
    begin
    if UseWSDL then
    Addr := defWSDL
    else
    Addr := defURL;
    end;
    if HTTPRIO = nil then
    RIO := THTTPRIO.Create(nil)
    else
    RIO := HTTPRIO;
    try
    Result := (RIO as mywebservicePortType);
    if UseWSDL then
    begin
    RIO.WSDLLocation := Addr;
    RIO.Service := defSvc;
    RIO.Port := defPrt;
    end else
    RIO.URL := Addr;
    finally
    if (Result = nil) and (HTTPRIO = nil) then
    RIO.Free;
    end;
    end;


    initialization
    InvRegistry.RegisterInterface(TypeInfo(mywebservicePortType), 'http://server', 'UTF-8');
    InvRegistry.RegisterDefaultSOAPAction(TypeInfo(mywebservicePortType), '');
    InvRegistry.RegisterInvokeOptions(TypeInfo(mywebservicePortType), ioDocument);
    InvRegistry.RegisterExternalParamName(TypeInfo(mywebservicePortType), 'add', 'out_', 'out');
    InvRegistry.RegisterExternalParamName(TypeInfo(mywebservicePortType), 'sayHello', 'out_', 'out');

    end.

    3.

    新建一个form窗体,拖入一个Button和一个edit控件。
    在窗体的uses部分加入InvokeRegistry, Rio, SOAPHTTPClient, mywebservice。
    为Button添加click事件。
    Java代码 收藏代码
    procedure TForm1.Button1Click(Sender: TObject);
    var
    server:mywebservicePortType;//此处为delphi生成的java-webservice的方法名。
    aa:string;
    begin
    server:=GetmywebservicePortType(true,'',nil);//delphi生成的方法
    showmessage(server.sayHello(Edit1.Text));//调用java-webservice的sayHello()方法。
    end;

    到此,delphi调用java的webservice服务器端程序示例已经完成。

  • 相关阅读:
    SQL 两张结构一样的表合并查询 .
    如何引用传递String Boolean 等,并改变他们的值
    SQL数据库还原时备份集中的数据库备份与现有的数据库不同的解决办法
    sqlserver查询指定树形结构的所有子节点
    TortoiseSVN 合并操作简明教程
    svn的merge使用例子
    svn merge部分的详细说明
    SVN使用方法总结
    spring中的aware接口
    spring是怎样面向接口编程的?
  • 原文地址:https://www.cnblogs.com/zhangzhifeng/p/3397299.html
Copyright © 2011-2022 走看看