DDV Inetis wsdl struktura

Vse drugo, kar ne spada v nobeno zgornjo kategorijo.
ervins
Prispevkov: 86
Pridružen: 03.12.2004 15:49:24

DDV Inetis wsdl struktura

Odgovor Napisal/-a ervins » 15.09.2009 11:47:59

@ervins: vse pohvale ! Tudi jaz se bom prej ali slej omastil s tvojo kodo. Ko se naslednjič pojaviš na Delphi-si pijači, piješ in ješ (lahko tudi žreš) na moj račun.

LP
Hehe to te zna drago stat. :D

LP, ervins

peterv
Prispevkov: 987
Pridružen: 29.03.2002 13:24:32

DDV Inetis wsdl struktura

Odgovor Napisal/-a peterv » 16.09.2009 10:19:13

Oj..
če kdo rabi je tukaj dober programček za testiranje webservisov.. SOAPUI

http://www.soapui.org/

TonyCaker
Prispevkov: 312
Pridružen: 27.09.2003 18:33:35

DDV Inetis wsdl struktura

Odgovor Napisal/-a TonyCaker » 25.09.2009 14:56:12

Primer uporabe ne dela najbolje v D7. Za fosile, kot sem jaz, prilagam kodo za D7:

Koda: Izberi vse

procedure TfrmOsMainEx.IskanjepoINETIS1Click(Sender: TObject);
var res: ArrayOfAnyType;
    zavezanec: anyType;
    racun: TxmlTransakcijskiRacun;
    n,m:Integer;
begin

  res := GetIskalnikSoap().Isci('Mercator');

  for n:= 0 to (Length(res)-1) do begin
     Zavezanec:= res[n];
     dbMemo1.Lines.Add(Format( 'Status: %s Davcna: %s, Naziv: %s',
                               [Chr(StrToInt(Zavezanec.xmlStatus)),
                               Zavezanec.xmlDavcnaStevilka,
                               Zavezanec.xmlNaziv]));
     for m:= 0 to (Length(Zavezanec.xmlTransakcijskiRacuni) -1) do begin
       racun:= Zavezanec.xmlTransakcijskiRacuni[m];
       dbMemo1.Lines.Add(Format('    TRR: %s Banka: %s Zaprt %s',
                                     [ racun.xmlTRR,
                                       racun.xmlImeBanke,
                                       FormatDateTime('dd.mm.yyyy hh:mm:ss.zzz', racun.xmlDatumZaprtja.AsDateTime)]));
     end
  end;


end;
 
A s ti tut not padu ?

Rokson
Prispevkov: 66
Pridružen: 17.03.2004 13:07:44

Re: DDV Inetis wsdl struktura

Odgovor Napisal/-a Rokson » 02.10.2013 13:29:17

ervins napisal/-a:Nič ni potrebno na roke parsat, samo pravilno je potrebno definirat, ker Delphijev WSDL importer ( v tolažbo tudi VS je ne) ne obvlada dobro te WSDL datoteke.

Ker sem danes dobre volje sem naredil v D2009 import WSDL-ja in prilagam popravljeno kodo.
To, da si bil ti pred štirimi leti en dan dobre volje, še danes koga reši pred harakirijem - recimo mene je ravnokar!
Hvala!

Rokson

pbezja1

Re: DDV Inetis wsdl struktura

Odgovor Napisal/-a pbezja1 » 16.01.2014 15:07:42

Tudi mene. ;)

zhigatsey
Prispevkov: 2
Pridružen: 11.05.2015 21:31:26

Re: DDV Inetis wsdl struktura

Odgovor Napisal/-a zhigatsey » 01.04.2016 21:01:33

Živjo,

danes sem tudi jaz vkomponiral ddv inetis v neko aplikacijo. Malo sem popravil tukaj objavljeno ddv inetis datoteko in vse deluje tako kot mora, vendar pa ob koncu aplikacije dobim poročilo o memory leakih (ReportMemoryLeaksOnShutdown := True). Uporabljam Delphi 2010. Spodaj je popravljena koda wsdl importa in primer klica. Ali lahko kdo id vas poskusi v novejših verzijah delphija, če vam tudi javi Memory Leake oz. v čem je problem v spodnji kodi. Čudno je to, da s FastMM4 ne javi nič memory leakov ob koncu izvajanja, torej samo z delphijevim "vgrajenim" memory leak detektorjem dobim leake. Hvala

An unexpected memory leak has occurred. The unexpected small block leaks are:
1 - 12 bytes: Unknown x 1
13 - 20 bytes: Unknown x 3
61 - 68 bytes: Unknown x 1

Wsdl importer popravljena koda:

Koda: Izberi vse

// ************************************************************************ //
// The types declared in this file were generated from data read from the
// WSDL File described below:
// WSDL     : http://ddv.inetis.com/Iskalnik.asmx?wsdl
//  >Import : http://ddv.inetis.com/Iskalnik.asmx?wsdl>0
//  >Import : http://ddv.inetis.com/Iskalnik.asmx?wsdl>1
// Encoding : utf-8
// Version  : 1.0
// (11.9.2009 8:45:59 - - $Rev: 16699 $)
// ************************************************************************ //

unit libDDVInetis;

interface

uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;

const
  IS_OPTN = $0001;
  IS_UNBD = $0002;
  IS_NLBL = $0004;
  IS_REF  = $0080;


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"[Gbl]

  TxmlTransakcijskiRacun = class(TRemotable)
  private
    FxmlTRR: String;
    FxmlVrstaRacuna: string;
    FxmlZaprt: Boolean;
    FxmlDatumZaprtja: TXSDateTime;
    FxmlDatumZadnjeSpremembe: TXSDateTime;
    FxmlImeBanke: String;
    FxmlDatumOdprtja: TXSDateTime;
  public
    destructor Destroy; override;
  published
    property xmlTRR: String  read FxmlTRR write FxmlTRR;
    property xmlVrstaRacuna: string read FxmlVrstaRacuna write FxmlVrstaRacuna;
    property xmlImeBanke: String  read FxmlImeBanke write FxmlImeBanke;
    property xmlDatumOdprtja: TXSDateTime  read FxmlDatumOdprtja write FxmlDatumOdprtja;
    property xmlDatumZadnjeSpremembe: TXSDateTime  read FxmlDatumZadnjeSpremembe write FxmlDatumZadnjeSpremembe;
    property xmlZaprt: Boolean  read FxmlZaprt write FxmlZaprt;
    property xmlDatumZaprtja: TXSDateTime  read FxmlDatumZaprtja write FxmlDatumZaprtja;
  end;

  TArrayOfTxmlTransakcijskiRacun = array of TxmlTransakcijskiRacun;

  TXmlZavezanec = class(TRemotable)
  private
    FxmlDavcnaStevilka: String;
    FxmlMaticnaStevilka: String;
    FxmlNaslov: String;
    FxmlStatus: string;
    FxmlNaziv: String;
    FxmlZavezanecZaDDV: Boolean;
    FxmlPlacnikDDV: Boolean;
    FxmlDatumRegistracije: TXSDateTime;
    FxmlDejavnost: String;
    FxmlUrad: String;
    FTxmlTransakcijskiRacun: TArrayOfTxmlTransakcijskiRacun;
  public
    destructor Destroy; override;
  published
    property xmlDavcnaStevilka: String  read FxmlDavcnaStevilka write FxmlDavcnaStevilka;
    property xmlMaticnaStevilka: String read FxmlMaticnaStevilka write FxmlMaticnaStevilka;
    property xmlStatus: string read FxmlStatus write FxmlStatus;
    property xmlNaziv: String read FxmlNaziv write FxmlNaziv;
    property xmlNaslov: String read FxmlNaslov write FxmlNaslov;
    property xmlZavezanecZaDDV: Boolean read FxmlZavezanecZaDDV write FxmlZavezanecZaDDV;
    property xmlPlacnikDDV: Boolean read FxmlPlacnikDDV write FxmlPlacnikDDV;
    property xmlDatumRegistracije: TXSDateTime  read FxmlDatumRegistracije write FxmlDatumRegistracije;
    property xmlDejavnost: String read FxmlDejavnost write FxmlDejavnost;
    property xmlUrad: String read FxmlUrad write FxmlUrad;
    property xmlTransakcijskiRacuni: TArrayOfTxmlTransakcijskiRacun read FTxmlTransakcijskiRacun write FTxmlTransakcijskiRacun;
  end;

  TArrayOfTxmlZavezanec = array of TxmlZavezanec;

  // ************************************************************************ //
  // Namespace : http://ddv.inetis.com/
  // soapAction: http://ddv.inetis.com/Isci
  // transport : http://schemas.xmlsoap.org/soap/http
  // style     : document
  // binding   : IskalnikSoap
  // service   : Iskalnik
  // port      : IskalnikSoap
  // URL       : http://ddv.inetis.com/Iskalnik.asmx
  // ************************************************************************ //

  IskalnikSoap = interface(IInvokable)
  ['{F1C4A65E-6E4B-E029-0CE4-7BF71E71C4FF}']
    function  Isci(const iskalni_niz: string): TArrayOfTxmlZavezanec; stdcall;
  end;

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


implementation
  uses SysUtils;

// TXmlZavezanec
destructor TXmlZavezanec.Destroy;
var
  I: Integer;
begin
  FreeAndNil(FxmlDatumRegistracije);
  for I := 0 to System.Length(FTxmlTransakcijskiRacun)-1 do
    SysUtils.FreeAndNil(FTxmlTransakcijskiRacun[I]);
  System.SetLength(FTxmlTransakcijskiRacun, 0);
  inherited Destroy;
end;

// TXmlTransakcijskiRacun
destructor TXmlTransakcijskiRacun.Destroy;
begin
  FreeAndNil(FxmlDatumZaprtja);
  FreeAndNil(FxmlDatumZadnjeSpremembe);
  FreeAndNil(FxmlDatumOdprtja);
  inherited Destroy;
end;

function GetIskalnikSoap(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): IskalnikSoap;
const
  defWSDL = 'http://ddv.inetis.com/Iskalnik.asmx?wsdl';
  defURL  = 'http://ddv.inetis.com/Iskalnik.asmx';
  defSvc  = 'Iskalnik';
  defPrt  = 'IskalnikSoap';
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 IskalnikSoap);
    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(IskalnikSoap), 'http://ddv.inetis.com/', 'utf-8');
  InvRegistry.RegisterDefaultSOAPAction(TypeInfo(IskalnikSoap), 'http://ddv.inetis.com/Isci');
  InvRegistry.RegisterInvokeOptions(TypeInfo(IskalnikSoap), ioDocument);
  RemClassRegistry.RegisterXSInfo(TypeInfo(TXmlZavezanec), 'http://ddv.inetis.com/', 'xmlZavezanec');
  RemClassRegistry.RegisterXSInfo(TypeInfo(TXmlTransakcijskiRacun), 'http://ddv.inetis.com/', 'xmlTransakcijskiRacun');

end.
Primer klica:

Koda: Izberi vse

procedure ClearZavezanci(Zavezanci: libDDVInetis.TArrayOfTxmlZavezanec);
var
  iZavezanec: Integer;
begin
  for iZavezanec := 0 to Length(Zavezanci) - 1 do
    TXMLZavezanec(Zavezanci[iZavezanec]).Free;
  SetLength(Zavezanci, 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Zavezanci: libDDVInetis.TArrayOfTxmlZavezanec;
  Iskalnik: libDDVInetis.IskalnikSoap;
begin
  Iskalnik := libDDVInetis.GetIskalnikSoap;
  Zavezanci := Iskalnik.Isci('Mercator');
  ClearZavezanci(Zavezanci);
end;

Odgovori