Jump to content

[Resolvido] WSDL em web server


smack_dead
 Share

Recommended Posts

Boa, tarde estou a ter um problema com a pôs importação do WSDL do meu web server. Isto é, depois de importar e adicionar ao delphi o meu ficheiro IWEBSERVER, ele não deixa correr porque diz que tem este erro -->

[error=delphi]

undeclared identifier Tproducts

Edited by smack_dead
Link to comment
Share on other sites

Só por esse trecho não dá para ver grande coisa...

Podes disponibilizar o WSDL?

  • Vote 1

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to comment
Share on other sites

sim


// ************************************************************************ //
// The types declared in this file were generated from data read from the
// WSDL File described below:
// WSDL     : C:\Users\JOAO\Desktop\projeto final cliente\Iwebserver.xml
//  >Import : C:\Users\JOAO\Desktop\projeto final cliente\Iwebserver.xml>0
// Version  : 1.0
// (27/03/2014 15:22:48 - - $Rev: 16699 $)
// ************************************************************************ //

unit Iwebserver1;

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.
 // ************************************************************************ //
 // !:Tproduct        - "urn:"[Gbl]
 // !:Tgroup          - "urn:"[Gbl]
 // !:string          - "http://www.w3.org/2001/XMLSchema"[]
 // !:Tcustomer       - "urn:"[]
 // !:int             - "http://www.w3.org/2001/XMLSchema"[]

 Tproducts  = array of Tproduct;               { "urn:webserverIntf"[GblCplx] }
 Tgroups    = array of Tgroup;                 { "urn:webserverIntf"[GblCplx] }

 // ************************************************************************ //
 // Namespace : urn:webserverIntf-Iwebserver
 // soapAction: urn:webserverIntf-Iwebserver#%operationName%
 // transport : http://schemas.xmlsoap.org/soap/http
 // style     : rpc
 // binding   : Iwebserverbinding
 // service   : Iwebserverservice
 // port      : IwebserverPort
 // URL       : http://localhost/Delphi2014WS/Webserver.exe/soap/Iwebserver
 // ************************************************************************ //
 Iwebserver = interface(IInvokable)
 ['{047F9BD0-8D6D-21B2-8F0C-70D22600B787}']
   function  GetProducts: Tproducts; stdcall;
   function  Login(const AUserName: string; const APassword: string): Tcustomer; stdcall;
   function  GetGroups: Tgroups; stdcall;
   function  GetCountries(const countryCode: string; const countryName: string): string; stdcall;
   function  SetOrder: Integer; stdcall;
   function  SetDeliveryAddress: Integer; stdcall;
 end;

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


implementation
 uses SysUtils;

function GetIwebserver(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): Iwebserver;
const
 defWSDL = 'C:\Users\JOAO\Desktop\projeto final cliente\Iwebserver.xml';
 defURL  = 'http://localhost/Delphi2014WS/Webserver.exe/soap/Iwebserver';
 defSvc  = 'Iwebserverservice';
 defPrt  = 'IwebserverPort';
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 Iwebserver);
   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(Iwebserver), 'urn:webserverIntf-Iwebserver', '');
 InvRegistry.RegisterDefaultSOAPAction(TypeInfo(Iwebserver), 'urn:webserverIntf-Iwebserver#%operationName%');
 RemClassRegistry.RegisterXSInfo(TypeInfo(Tproducts), 'urn:webserverIntf', 'Tproducts');
 RemClassRegistry.RegisterXSInfo(TypeInfo(Tgroups), 'urn:webserverIntf', 'Tgroups');

end.

Link to comment
Share on other sites

O erro que há é mesmo TProducts, ou TProduct (singular)?

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to comment
Share on other sites

O moço, deixa lá as struct e os records em paz e sossego.

O WSDL é gerado, e usa à partida uma classe TProduct e um array TProducts.

Qual é o erro que te dá? TProduct ou TProducts?

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to comment
Share on other sites

Dá erro nos dois?

Verifica se tens a unit do WSDL a ser chamada na unit que te dá erro...

  • Vote 1

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to comment
Share on other sites

E eu continuo a dizer que o uso dos records só te está a atrapalhar.

Desta feita, estás a usar nomes para os teus records que são usados também pelo WSDL. Basta a ordem em que eles aparecem não estar certa, já baralha tudo.

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to comment
Share on other sites

Isso é o que já tenho perguntado, e ainda não respondeste:

Precisas da estrutura deles para quê?

Foi o professor que mandou lá por?

É que tirando essa razão, não vejo mais nenhuma para eles lá estarem. A própria base de dados SQL já tem essa estrutura.

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to comment
Share on other sites

Que irias precisar, ou que TINHAS de usar?

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to comment
Share on other sites

Acho que o professor devia explicar porque raio quer isso... mas pronto!

- Muda o nome dos teus records, de modo a não conflituarem com nenhum objecto do WSDL

- Verifica se a unit gerada pelo WSDL está na secção uses dos restantes ficheiros.

  • Vote 1

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.