Fórum Como colocar mais de uma função no meu WebService #288629
19/07/2005
0
Olá...
Tenho um webservice que tem um datamodule para o acesso a um DB.
Eu criei uma função , implementei, compilei... importei na minha app... e rodou legal... mas surgiu a necessidade de adicionar mais uma função no webservice... fiz tudo novamente, declarei, implementei, compilei o ws e quando eu uso o WSDL importer na minha APP, dá um erro...
´Access violation at address 502A3EC2 in Module ´dclsoap.bpl´. Read of adress 51EC8B61.´
O estranho é que quando eu acesso o endereço do WSDL pelo browser, eu consigo visualizar a função, seus parametros, etc... normalmente...
Abaixo o Código do WebService...
Unit Unt_DataModule;
interface
uses SysUtils, Classes, InvokeRegistry, Midas, SOAPMidas, SOAPDm, Lock, DB,ADODB,DateUtils;
type
IwsDataModule = interface(IAppServerSOAP)
[´{A7058B04-82C3-4FFD-9A20-30AC8A909514}´]
function getSerialStatus(_senha, _serial: String): Integer; stdcall;
function setRegistro(_senha, _serial,_nome,_cpf,_cnpj,_telefone,_email,_rua,_bairro,_cidade,_estado,_pais,_cep : String;_clitipo : Integer;_dtnasc:TDateTime): String; stdcall;
end;
TwsDataModule = class(TSoapDataModule, IwsDataModule, IAppServerSOAP, IAppServer)
DBConnection: TADOConnection;
private
function getSerialStr(_serial: string; _pos: Integer): String;
public
function getSerialStatus(_senha, _serial: String): Integer; stdcall;
function setRegistro(_senha, _serial,_nome,_cpf,_cnpj,_telefone,_email,_rua,_bairro,_cidade,_estado,_pais,_cep : String;_clitipo : Integer;_dtnasc:TDateTime): String; stdcall;
end;
implementation
{$R *.DFM}
CONST SenhaWS = ´SENHA´;
{ TwsDataModule }
procedure TwsDataModuleCreateInstance(out obj: TObject);
begin
obj := TwsDataModule.Create(nil);
end;
/////////////////////////////////////////////////////////////////
// FUNCÃO DO WEBSERVICE
/////////////////////////////////////////////////////////////////
function TwsDataModule.getSerialStatus(_senha, _serial: String): Integer; stdcall;
Begin
..... implementação da funcao
end;
/////////////////////////////////////////////////////////////////
// FUNCÃO DO WEBSERVICE
/////////////////////////////////////////////////////////////////
function TwsDataModule.setRegistro(_senha, _serial,_nome,_cpf,_cnpj,_telefone,_email,_rua,_bairro,_cidade,_estado,_pais,_cep : String;_clitipo : Integer;_dtnasc:TDateTime): String; stdcall;
Begin
..... implementação da funcao
end;
////////////////////////////////////////////////////////////////
// FUNÇÕES LOCAIS
////////////////////////////////////////////////////////////////
function TwsDataModule.getSerialStr(_serial: string; _pos: Integer): String;
begin
..... implementação da funcao
end;
initialization
InvRegistry.RegisterInvokableClass(TwsDataModule, TwsDataModuleCreateInstance);
InvRegistry.RegisterInterface(TypeInfo(IwsDataModule));
end.
O que poderia ser?
Obrigado...
Fábio
Tenho um webservice que tem um datamodule para o acesso a um DB.
Eu criei uma função , implementei, compilei... importei na minha app... e rodou legal... mas surgiu a necessidade de adicionar mais uma função no webservice... fiz tudo novamente, declarei, implementei, compilei o ws e quando eu uso o WSDL importer na minha APP, dá um erro...
´Access violation at address 502A3EC2 in Module ´dclsoap.bpl´. Read of adress 51EC8B61.´
O estranho é que quando eu acesso o endereço do WSDL pelo browser, eu consigo visualizar a função, seus parametros, etc... normalmente...
Abaixo o Código do WebService...
Unit Unt_DataModule;
interface
uses SysUtils, Classes, InvokeRegistry, Midas, SOAPMidas, SOAPDm, Lock, DB,ADODB,DateUtils;
type
IwsDataModule = interface(IAppServerSOAP)
[´{A7058B04-82C3-4FFD-9A20-30AC8A909514}´]
function getSerialStatus(_senha, _serial: String): Integer; stdcall;
function setRegistro(_senha, _serial,_nome,_cpf,_cnpj,_telefone,_email,_rua,_bairro,_cidade,_estado,_pais,_cep : String;_clitipo : Integer;_dtnasc:TDateTime): String; stdcall;
end;
TwsDataModule = class(TSoapDataModule, IwsDataModule, IAppServerSOAP, IAppServer)
DBConnection: TADOConnection;
private
function getSerialStr(_serial: string; _pos: Integer): String;
public
function getSerialStatus(_senha, _serial: String): Integer; stdcall;
function setRegistro(_senha, _serial,_nome,_cpf,_cnpj,_telefone,_email,_rua,_bairro,_cidade,_estado,_pais,_cep : String;_clitipo : Integer;_dtnasc:TDateTime): String; stdcall;
end;
implementation
{$R *.DFM}
CONST SenhaWS = ´SENHA´;
{ TwsDataModule }
procedure TwsDataModuleCreateInstance(out obj: TObject);
begin
obj := TwsDataModule.Create(nil);
end;
/////////////////////////////////////////////////////////////////
// FUNCÃO DO WEBSERVICE
/////////////////////////////////////////////////////////////////
function TwsDataModule.getSerialStatus(_senha, _serial: String): Integer; stdcall;
Begin
..... implementação da funcao
end;
/////////////////////////////////////////////////////////////////
// FUNCÃO DO WEBSERVICE
/////////////////////////////////////////////////////////////////
function TwsDataModule.setRegistro(_senha, _serial,_nome,_cpf,_cnpj,_telefone,_email,_rua,_bairro,_cidade,_estado,_pais,_cep : String;_clitipo : Integer;_dtnasc:TDateTime): String; stdcall;
Begin
..... implementação da funcao
end;
////////////////////////////////////////////////////////////////
// FUNÇÕES LOCAIS
////////////////////////////////////////////////////////////////
function TwsDataModule.getSerialStr(_serial: string; _pos: Integer): String;
begin
..... implementação da funcao
end;
initialization
InvRegistry.RegisterInvokableClass(TwsDataModule, TwsDataModuleCreateInstance);
InvRegistry.RegisterInterface(TypeInfo(IwsDataModule));
end.
O que poderia ser?
Obrigado...
Fábio
Stratofabius
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)