Delphi 调用JAVA WebService例子

先用JAVA写一个WebService

ServiceHello.java


package com.hyan.service;

import java.sql.SQLException;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

@WebService
public class ServiceHello {

......

public static void main(String[] args) throws SQLException {
Endpoint.publish("http://localhost:9001/Service/ServiceHello", new ServiceHello());
System.out.println("Service Success!");
}

public String getValue(String name){
return "我叫:"+name;

}

}

......

编译,出现如下信息表示WebService成功:


2016-3-18 9:09:46 com.sun.xml.internal.ws.model.RuntimeModeler getRequestWrapperClass
信息: Dynamically creating request wrapper Class com.hyan.service.jaxws.GetValue
2016-3-18 9:09:47 com.sun.xml.internal.ws.model.RuntimeModeler getResponseWrapperClass
信息: Dynamically creating response wrapper bean Class com.hyan.service.jaxws.GetValueResponse
Service Success!

--------------------------------------------------------------------------------------------------


这个ServiceHello1.pas是Delphi7 File-New-Other...-WebServices(WSDL Importer),输入http://localhost:9001/Service/ServiceHello?wsdl
产生的文件
ServiceHello1.pas
...
  ServiceHello = interface(IInvokable)
  ['{42FB9557-480A-8744-60B3-05D97B2682E2}']
    function  getValue(const arg0: WideString): WideString; stdcall;
  end;


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


implementation
  uses SysUtils;


function GetServiceHello(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): ServiceHello;
const
  defWSDL = 'http://localhost:9001/Service/ServiceHello?wsdl';
  defURL  = 'http://localhost:9001/Service/ServiceHello';
  defSvc  = 'ServiceHelloService';
  defPrt  = 'ServiceHelloPort';
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 ServiceHello);
    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(ServiceHello), 'http://service.hyan.com/', 'UTF-8');
  InvRegistry.RegisterDefaultSOAPAction(TypeInfo(ServiceHello), '');
  //注意:下面系统自动生成,如果不注释掉,传人的参数将全部为null,不清楚什么原因,请大侠指教!
  //InvRegistry.RegisterInvokeOptions(TypeInfo(ServiceHello), ioDocument);


end.
...

--------------------------------------------------------------------------------------------------

Delphi 调用JAVA WebService

Unit1.pas


uses ServiceHello1;

var
  ServiceHello1: ServiceHello;


procedure TForm1.btn5Click(Sender: TObject);
var
  wsdl1:string;
begin
  wsdl1 := 'http://localhost:9001/Service/ServiceHello?wsdl';


  //连中间层(JAVA)
  ServiceHello1:=GetServiceHello(true,wsdl1,nil);


  edt3.Text:=ServiceHello1.getValue('欢迎Delphi来JAVA WebService');
end;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值