小弟第一次发帖,查了好多资料都弄不明白,望高手们多指点:
delphi程序调用报告如下异常:
defWSDL = 'http://192.168.0.1:8080/LCardService/HighWay?wsdl';自动生成代码如下:
// ************************************************************************ //
// The types declared in this file were generated from data read from the
// WSDL File described below:
// WSDL : http://192.168.0.1:8080/LCardService/HighWay?wsdl
// >Import : http://192.168.0.1:8080/LCardService/HighWay?wsdl=IHighWay.wsdl
// Encoding : UTF-8
// Version : 1.0
// (2013-4-25 15:09:51 - 1.33.2.5)
// ************************************************************************ //unit HighWay;interfaceuses 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.
// ************************************************************************ //
// !:string - "http://www.w3.org/2001/XMLSchema"
// !:base64Binary - "http://www.w3.org/2001/XMLSchema" upLoadPicResponse = class; { "http://business.subservice.xds.ihe.neusoft.com/" }
doServiceResponse = class; { "http://business.subservice.xds.ihe.neusoft.com/" }
doServiceExtResponse = class; { "http://business.subservice.xds.ihe.neusoft.com/" }
doService = class; { "http://business.subservice.xds.ihe.neusoft.com/" }
upLoadPic = class; { "http://business.subservice.xds.ihe.neusoft.com/" }
doServiceExt = class; { "http://business.subservice.xds.ihe.neusoft.com/" } // ************************************************************************ //
// Namespace : http://business.subservice.xds.ihe.neusoft.com/
// ************************************************************************ //
upLoadPicResponse = class(TRemotable)
private
Freturn: WideString;
published
property return: WideString read Freturn write Freturn;
end; // ************************************************************************ //
// Namespace : http://business.subservice.xds.ihe.neusoft.com/
// ************************************************************************ //
doServiceResponse = class(TRemotable)
private
Freturn: WideString;
published
property return: WideString read Freturn write Freturn;
end; // ************************************************************************ //
// Namespace : http://business.subservice.xds.ihe.neusoft.com/
// ************************************************************************ //
doServiceExtResponse = class(TRemotable)
private
Freturn: WideString;
published
property return: WideString read Freturn write Freturn;
end; // ************************************************************************ //
// Namespace : http://business.subservice.xds.ihe.neusoft.com/
// ************************************************************************ //
doService = class(TRemotable)
private
Farg0: WideString;
published
property arg0: WideString read Farg0 write Farg0;
end; // ************************************************************************ //
// Namespace : http://business.subservice.xds.ihe.neusoft.com/
// ************************************************************************ //
upLoadPic = class(TRemotable)
private
Farg0: TByteDynArray;
published
property arg0: TByteDynArray read Farg0 write Farg0;
end; // ************************************************************************ //
// Namespace : http://business.subservice.xds.ihe.neusoft.com/
// ************************************************************************ //
doServiceExt = class(TRemotable)
private
Farg0: WideString;
Farg1: TByteDynArray;
published
property arg0: WideString read Farg0 write Farg0;
property arg1: TByteDynArray read Farg1 write Farg1;
end;
// ************************************************************************ //
// Namespace : http://business.subservice.xds.ihe.neusoft.com/
// binding : HighWaySoapBinding
// service : HighWay
// port : HighWayImplPort
// URL : http://192.168.0.1:8080/LCardService/HighWay
// ************************************************************************ //
IHighWay = interface(IInvokable)
['{53F3A949-B88F-F51D-0FFC-EC7B0D7E8D03}']
function doServiceExt(const parameters: doServiceExt): doServiceExtResponse; stdcall;
function doService(const parameters: doService): doServiceResponse; stdcall;
function upLoadPic(const parameters: upLoadPic): upLoadPicResponse; stdcall;
end;function GetIHighWay(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): IHighWay;
implementationfunction GetIHighWay(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): IHighWay;
const
defWSDL = 'http://192.168.0.1:8080/LCardService/HighWay?wsdl';
defURL = 'http://192.168.0.1:8080/LCardService/HighWay';
defSvc = 'HighWay';
defPrt = 'HighWayImplPort';
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 IHighWay);
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(IHighWay), 'http://business.subservice.xds.ihe.neusoft.com/', 'UTF-8');
InvRegistry.RegisterDefaultSOAPAction(TypeInfo(IHighWay), '');
// InvRegistry.RegisterInvokeOptions(TypeInfo(IHighWay),ioDocument);
RemClassRegistry.RegisterXSClass(upLoadPicResponse, 'http://business.subservice.xds.ihe.neusoft.com/', 'upLoadPicResponse');
RemClassRegistry.RegisterXSClass(doServiceResponse, 'http://business.subservice.xds.ihe.neusoft.com/', 'doServiceResponse');
RemClassRegistry.RegisterXSClass(doServiceExtResponse, 'http://business.subservice.xds.ihe.neusoft.com/', 'doServiceExtResponse');
RemClassRegistry.RegisterXSClass(doService, 'http://business.subservice.xds.ihe.neusoft.com/', 'doService');
RemClassRegistry.RegisterXSClass(upLoadPic, 'http://business.subservice.xds.ihe.neusoft.com/', 'upLoadPic');
RemClassRegistry.RegisterXSClass(doServiceExt, 'http://business.subservice.xds.ihe.neusoft.com/', 'doServiceExt');end.调用函数如下:unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, InvokeRegistry, StdCtrls, Rio, SOAPHTTPClient,highway;type
TForm1 = class(TForm)
HTTPRIO1: THTTPRIO;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
doServiceRes :doServiceResponse;
doSer :doService;
lIntf:IHighWay;
DataCon: TDataContext;
DataCon1: TinvCONTEXT;
bb:Pointer;
_contex2 : WideString;
CC: longint;
s:string;begin _contex2 := '<?xml version="1.0" encoding="utf-8" standalone="yes"?> '
+ '<neuMessage>'
+ '<head>'
+ '<businessType>P0002</businessType>'
+ '<sendTime>20130220134559</sendTime>'
+ '<sendNum>p000120130220134559</sendNum>'
+ '<returnNum></returnNum>'
+ '<areaCode>210100</areaCode>'
+ '<sendOrgName>?1?</sendOrgName>'
+ '<resFlag></resFlag>'
+ '<resMessage></resMessage>'
+ '</head>'
+ '<body>'
+ '<baseResidentsInfo>'
+ '<ddf1ef06_0001>??</ddf1ef06_0001>'
+ '<ddf1df01ef08_0001>1</ddf1df01ef08_0001>'
+ '<ddf1ef06_0005>210724195412055624</ddf1ef06_0005>'
+ '</baseResidentsInfo>'
+ '</body>'
+ '</neuMessage>'; doSer := doService.Create ; doser.arg0 := _contex2;
lIntf := (HTTPRIO1 as IHighWay); doServiceRes := getIhighWay.doService(doser);
DataCon1.Destroy ;
//Result := false;end;//Form 初始化
procedure TForm1.FormCreate(Sender: TObject);
begin
HTTPRIO1.WSDLLocation := 'http://192.168.0.1:8080/LCardService/HighWay?wsdl';
HTTPRIO1.Service := 'HighWay';
HTTPRIO1.Port := 'HighWayImplPort';
end;end.Delphi
delphi程序调用报告如下异常:
defWSDL = 'http://192.168.0.1:8080/LCardService/HighWay?wsdl';自动生成代码如下:
// ************************************************************************ //
// The types declared in this file were generated from data read from the
// WSDL File described below:
// WSDL : http://192.168.0.1:8080/LCardService/HighWay?wsdl
// >Import : http://192.168.0.1:8080/LCardService/HighWay?wsdl=IHighWay.wsdl
// Encoding : UTF-8
// Version : 1.0
// (2013-4-25 15:09:51 - 1.33.2.5)
// ************************************************************************ //unit HighWay;interfaceuses 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.
// ************************************************************************ //
// !:string - "http://www.w3.org/2001/XMLSchema"
// !:base64Binary - "http://www.w3.org/2001/XMLSchema" upLoadPicResponse = class; { "http://business.subservice.xds.ihe.neusoft.com/" }
doServiceResponse = class; { "http://business.subservice.xds.ihe.neusoft.com/" }
doServiceExtResponse = class; { "http://business.subservice.xds.ihe.neusoft.com/" }
doService = class; { "http://business.subservice.xds.ihe.neusoft.com/" }
upLoadPic = class; { "http://business.subservice.xds.ihe.neusoft.com/" }
doServiceExt = class; { "http://business.subservice.xds.ihe.neusoft.com/" } // ************************************************************************ //
// Namespace : http://business.subservice.xds.ihe.neusoft.com/
// ************************************************************************ //
upLoadPicResponse = class(TRemotable)
private
Freturn: WideString;
published
property return: WideString read Freturn write Freturn;
end; // ************************************************************************ //
// Namespace : http://business.subservice.xds.ihe.neusoft.com/
// ************************************************************************ //
doServiceResponse = class(TRemotable)
private
Freturn: WideString;
published
property return: WideString read Freturn write Freturn;
end; // ************************************************************************ //
// Namespace : http://business.subservice.xds.ihe.neusoft.com/
// ************************************************************************ //
doServiceExtResponse = class(TRemotable)
private
Freturn: WideString;
published
property return: WideString read Freturn write Freturn;
end; // ************************************************************************ //
// Namespace : http://business.subservice.xds.ihe.neusoft.com/
// ************************************************************************ //
doService = class(TRemotable)
private
Farg0: WideString;
published
property arg0: WideString read Farg0 write Farg0;
end; // ************************************************************************ //
// Namespace : http://business.subservice.xds.ihe.neusoft.com/
// ************************************************************************ //
upLoadPic = class(TRemotable)
private
Farg0: TByteDynArray;
published
property arg0: TByteDynArray read Farg0 write Farg0;
end; // ************************************************************************ //
// Namespace : http://business.subservice.xds.ihe.neusoft.com/
// ************************************************************************ //
doServiceExt = class(TRemotable)
private
Farg0: WideString;
Farg1: TByteDynArray;
published
property arg0: WideString read Farg0 write Farg0;
property arg1: TByteDynArray read Farg1 write Farg1;
end;
// ************************************************************************ //
// Namespace : http://business.subservice.xds.ihe.neusoft.com/
// binding : HighWaySoapBinding
// service : HighWay
// port : HighWayImplPort
// URL : http://192.168.0.1:8080/LCardService/HighWay
// ************************************************************************ //
IHighWay = interface(IInvokable)
['{53F3A949-B88F-F51D-0FFC-EC7B0D7E8D03}']
function doServiceExt(const parameters: doServiceExt): doServiceExtResponse; stdcall;
function doService(const parameters: doService): doServiceResponse; stdcall;
function upLoadPic(const parameters: upLoadPic): upLoadPicResponse; stdcall;
end;function GetIHighWay(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): IHighWay;
implementationfunction GetIHighWay(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): IHighWay;
const
defWSDL = 'http://192.168.0.1:8080/LCardService/HighWay?wsdl';
defURL = 'http://192.168.0.1:8080/LCardService/HighWay';
defSvc = 'HighWay';
defPrt = 'HighWayImplPort';
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 IHighWay);
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(IHighWay), 'http://business.subservice.xds.ihe.neusoft.com/', 'UTF-8');
InvRegistry.RegisterDefaultSOAPAction(TypeInfo(IHighWay), '');
// InvRegistry.RegisterInvokeOptions(TypeInfo(IHighWay),ioDocument);
RemClassRegistry.RegisterXSClass(upLoadPicResponse, 'http://business.subservice.xds.ihe.neusoft.com/', 'upLoadPicResponse');
RemClassRegistry.RegisterXSClass(doServiceResponse, 'http://business.subservice.xds.ihe.neusoft.com/', 'doServiceResponse');
RemClassRegistry.RegisterXSClass(doServiceExtResponse, 'http://business.subservice.xds.ihe.neusoft.com/', 'doServiceExtResponse');
RemClassRegistry.RegisterXSClass(doService, 'http://business.subservice.xds.ihe.neusoft.com/', 'doService');
RemClassRegistry.RegisterXSClass(upLoadPic, 'http://business.subservice.xds.ihe.neusoft.com/', 'upLoadPic');
RemClassRegistry.RegisterXSClass(doServiceExt, 'http://business.subservice.xds.ihe.neusoft.com/', 'doServiceExt');end.调用函数如下:unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, InvokeRegistry, StdCtrls, Rio, SOAPHTTPClient,highway;type
TForm1 = class(TForm)
HTTPRIO1: THTTPRIO;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
doServiceRes :doServiceResponse;
doSer :doService;
lIntf:IHighWay;
DataCon: TDataContext;
DataCon1: TinvCONTEXT;
bb:Pointer;
_contex2 : WideString;
CC: longint;
s:string;begin _contex2 := '<?xml version="1.0" encoding="utf-8" standalone="yes"?> '
+ '<neuMessage>'
+ '<head>'
+ '<businessType>P0002</businessType>'
+ '<sendTime>20130220134559</sendTime>'
+ '<sendNum>p000120130220134559</sendNum>'
+ '<returnNum></returnNum>'
+ '<areaCode>210100</areaCode>'
+ '<sendOrgName>?1?</sendOrgName>'
+ '<resFlag></resFlag>'
+ '<resMessage></resMessage>'
+ '</head>'
+ '<body>'
+ '<baseResidentsInfo>'
+ '<ddf1ef06_0001>??</ddf1ef06_0001>'
+ '<ddf1df01ef08_0001>1</ddf1df01ef08_0001>'
+ '<ddf1ef06_0005>210724195412055624</ddf1ef06_0005>'
+ '</baseResidentsInfo>'
+ '</body>'
+ '</neuMessage>'; doSer := doService.Create ; doser.arg0 := _contex2;
lIntf := (HTTPRIO1 as IHighWay); doServiceRes := getIhighWay.doService(doser);
DataCon1.Destroy ;
//Result := false;end;//Form 初始化
procedure TForm1.FormCreate(Sender: TObject);
begin
HTTPRIO1.WSDLLocation := 'http://192.168.0.1:8080/LCardService/HighWay?wsdl';
HTTPRIO1.Service := 'HighWay';
HTTPRIO1.Port := 'HighWayImplPort';
end;end.Delphi
doServiceRes := getIhighWay.doService(doser);
时候报的错误在线等哦
doSer.后面没有doService高手们再给看看
最开始用的是lIntf,不行,同样的错误,就换了getIhighWay
你对象创建错了
HTTPRIO1是加的一个组件,那应该怎么创建呢?
function GetIHighWay(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): IHighWay;
好像也不是这个问题,我这个是比照着天气预报的例子写的,天气预报例子这样写没有问题,如下
lIntf := (HTTPRIO1 as WeatherWSSoap);我觉得应该是参数的问题,不知道这个参数怎么传,还有可能是ioDocument问题,但不知道怎么解决
试了,用
lIntf := getIhighWay( false, 'http://192.168.0.1:8080/LCardService/HighWay?wsdl', nil);
lIntf.doService( doser );报了同样的错误
用
try
lIntf.doService(doser);
except
end;
这个试一下
lIntf.doService( doser );
就报最开始图的错误了
应该是参数不正确,可是这个doservice参数应该怎么传递呢?
lIntf := (HTTPRIO1 as IHighWay);
doServiceRes := getIhighWay.doService(doser);改成 doServiceRes := (HTTPRIO1 as IHighWay).doService(doser);