Forum Kurallarımız güncellenmiştir. DelphiCan Forum Kuralları (March 04) x

Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Servis (wsdl) dönen değeri işleme
#11
İsmail beyde göndermişti hocam o dosyayı, kontrol ettim, d7 ile oluşturulandan çok farklı, oda sürüm farklılıklarından geliyor sanırım.
WWW
Cevapla
#12
delphi7 kurulu değil şuan, gün içinde kurulum yapıp test etmeye çalışayım. Belki bir çözüm vardır. yoksa eğer, size ya versiyon geçişi yada DLL yolu gözükecek hocam.
Cevapla
#13
Teşekkürler, gerek yok şimdilik, daha önce yazdığım gibi xml parse ile sorunsuz şekilde çözüme ulaştım. Direk nesneler ile erişebilseydim daha iyi olurdu tabii, vakit buldukça yine uğraşıcaz artık kısmet.
WWW
Cevapla
#14
(21-08-2017, Saat: 11:15)esistem Adlı Kullanıcıdan Alıntı:
(21-08-2017, Saat: 11:11)Cyber Adlı Kullanıcıdan Alıntı: Merahaba Hocam,
ulaşmak istediğiniz veriler 

Identifier
PostboxAlias
Title
Type
SystemCreateDate
FirstCreateDate
Enabled


ise aşağıdaki şekilde deneyebilir misiniz?

MEMO1.Lines.Add(INTTOSTR(X)+' - '+sysusers.Value.Items[x].Identifier+' - '+sysusers.Value.Items[x].Title);

Items olarak maalesef veri getirmiyor, veya getiriyorda ben okuyamıyorum. Items TByteDynArray tipinde fakat bir türlü içeriğini okuyamıyorum. sizeof 4 byte fakat length 0 geliyor.
Daha doğrusu dönen tip PagedResponseOfSystemUser oda InvoiceData tipinde oda TByteDynArray tipinde fakat bir türlü veri göstermiyor.
Merhaba
Items ilk mesajınızda TByteDynArray tipinde gözükmüyor.
 
PagedResponseOfSystemUser = class;
/////////////////////////////////////////////////////////////////////////
  PagedResponseOfSystemUser = class(TRemotable)
  private
    FPageIndex: Integer;
    FPageSize: Integer;
    FTotalCount: Integer;
    FTotalPages: Integer;
    FItems: Items;
  public
    constructor Create; override;
    destructor Destroy; override;
    function   GetInvoiceDataArray(Index: Integer): InvoiceData;
    function   GetInvoiceDataArrayLength: Integer;
    property   InvoiceDataArray[Index: Integer]: InvoiceData read GetInvoiceDataArray; default;
    property   Len: Integer read GetInvoiceDataArrayLength;
  published
    property PageIndex: Integer read FPageIndex write FPageIndex stored AS_ATTRIBUTE;
    property PageSize: Integer read FPageSize write FPageSize stored AS_ATTRIBUTE;
    property TotalCount: Integer read FTotalCount write FTotalCount stored AS_ATTRIBUTE;
    property TotalPages: Integer read FTotalPages write FTotalPages stored AS_ATTRIBUTE;
    property Items: Items read FItems write FItems;
  end;

Items      = array of InvoiceData; 
Siz Delphi 7 de import ettiğiniz uniti buraya ekleyin.Müsait bir zamanda bakayım.
WWW
Cevapla
#15
dosya ektedir hocam.
Bu arada items şu şekilde.
  InvoiceData = class(TRemotable)
  private
   FData: TByteDynArray;
   FLocalDocumentId: WideString;
   FExtraInformation: WideString;
   FInvoiceId: WideString;
 published
   property Data: TByteDynArray read FData write FData;
   property LocalDocumentId: WideString read FLocalDocumentId write FLocalDocumentId stored AS_ATTRIBUTE;
   property ExtraInformation: WideString read FExtraInformation write FExtraInformation stored AS_ATTRIBUTE;
   property InvoiceId: WideString read FInvoiceId write FInvoiceId stored AS_ATTRIBUTE;
 end;

 Items      = array of InvoiceData;            { "http://tempuri.org/" }


Ek Dosyalar
.zip   BasicIntegration.zip (Dosya Boyutu: 7,96 KB / İndirme Sayısı: 10)
WWW
Cevapla
#16
Daha öncede bahsettiğim gibi Berlin ve Delphi 7 ile import edilen 2 uniti karşılaştırdım.
Berlindeki import edilen wsdl unitin veriyi düzgün çekmesini baz alıp, Delphi 7 ile import edilen uniti ona göre düzenlendim.
Soap UI ya da fiddler ile görünen veriler doğrudur, fakat mantıken o alanlar InvoiceData sınıfında yok.
Dolayısı ile xml'deki alanlar ile delphi tarafındaki karşılığı olan sınıftaki alanlar aynı olmalı.



Delphi 7 ile import ettiğiniz unitin en tepesine aşağıdaki sınıfı ekliyoruz.
  // ************************************************************************ //
 // XML       : SystemUser, global, <complexType>
 // Namespace : http://tempuri.org/
 // ************************************************************************ //
 SystemUser = class(TRemotable)
 private
   FIdentifier: WideString;
   FIdentifier_Specified: boolean;
   FPostboxAlias: WideString;
   FPostboxAlias_Specified: boolean;
   FSenderboxAlias: WideString;
   FSenderboxAlias_Specified: boolean;
   FTitle: WideString;
   FTitle_Specified: boolean;
   FType_: WideString;
   FType__Specified: boolean;
   FSystemCreateDate: WideString;
   FSystemCreateDate_Specified: boolean;
   FFirstCreateDate: WideString;
   FFirstCreateDate_Specified: boolean;
   FEnabled: Boolean;
 published
   property Identifier:       WideString   read FIdentifier write FIdentifier  stored AS_ATTRIBUTE;
   property PostboxAlias:     WideString   read FPostboxAlias write FPostboxAlias stored AS_ATTRIBUTE;
   property SenderboxAlias:   WideString   read FSenderboxAlias write FSenderboxAlias stored AS_ATTRIBUTE;
   property Title:            WideString   read FTitle write FTitle stored AS_ATTRIBUTE;
   property Type_:            WideString   read FType_ write FType_ stored AS_ATTRIBUTE;
   property SystemCreateDate: WideString   read FSystemCreateDate write FSystemCreateDate stored AS_ATTRIBUTE;
   property FirstCreateDate:  WideString   read FFirstCreateDate write FFirstCreateDate stored AS_ATTRIBUTE;
   property Enabled:          Boolean  read FEnabled write FEnabled stored AS_ATTRIBUTE;
 end;

 Array_Of_SystemUser = array of SystemUser;    { "http://tempuri.org/"[GblUbnd] }


Tipin register edilmesi
  
RemClassRegistry.RegisterXSClass(SystemUser, 'http://tempuri.org/', 'SystemUser'); // eklendi.

Son olarak PagedResponseOfSystemUser sınıfındaki FItems alanı ve property'nin tipini Array_Of_SystemUser olarak değiştiriyoruz.
  // ************************************************************************ //
 // Namespace : http://tempuri.org/
 // Serializtn: [xoInlineArrays]
 // ************************************************************************ //
 PagedResponseOfSystemUser = class(TRemotable)
 private
   FPageIndex: Integer;
   FPageSize: Integer;
   FTotalCount: Integer;
   FTotalPages: Integer;
   FItems : Array_Of_SystemUser; // tipi değiştirildi.
 public
   constructor Create; override;
   destructor Destroy; override;
   function   GetInvoiceDataArray(Index: Integer): InvoiceData;
   function   GetInvoiceDataArrayLength: Integer;
   property   InvoiceDataArray[Index: Integer]: InvoiceData read GetInvoiceDataArray; default;
   property   Len: Integer read GetInvoiceDataArrayLength;
 published
   property PageIndex: Integer read FPageIndex write FPageIndex stored AS_ATTRIBUTE;
   property PageSize: Integer read FPageSize write FPageSize stored AS_ATTRIBUTE;
   property TotalCount: Integer read FTotalCount write FTotalCount stored AS_ATTRIBUTE;
   property TotalPages: Integer read FTotalPages write FTotalPages stored AS_ATTRIBUTE;
   property Items: Array_Of_SystemUser read FItems write FItems; // tipi değiştirildi.
 end;

Gerisi bildiğiniz gibi..
ERkz1z.png
WWW
Cevapla
#17
İsmail bey ilginiz için çok teşekkür ederim. Dün yaptığım denemelerde XML olarak dönen değerlerden sonuca ulaşmıştım. Verdiğiniz kod işimi daha da kolaylaştıcak. Tekrar teşekkürler.
WWW
Cevapla
#18
Rica ederim, kolay gelsin.
Eğer public bloğundaki methodlar üzerinden erişmek isterseniz SystemUser tipine göre onları da düzenlemeniz gerekecektir.
Doğrudan Items property üzerinden eriştiğim için, kullanmamışım.
  function   GetInvoiceDataArray(Index: Integer): InvoiceData;
  function   GetInvoiceDataArrayLength: Integer;
  property   InvoiceDataArray[Index: Integer]: InvoiceData read GetInvoiceDataArray; default;
  property   Len: Integer read GetInvoiceDataArrayLength;
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Birden fazla WSDL servisin otomatik güncellenmesi Abdullah ILGAZ 4 195 11 saat önce
Son Yorum: Abdullah ILGAZ
  ISNULL değeri kontrol etmek OZCANK 7 176 25-05-2020, Saat: 20:41
Son Yorum: ihalilcoban
  Windows Servis Hizmetleri Çalıştırmak glagher 2 254 13-05-2020, Saat: 12:01
Son Yorum: Bay_Y
  Chromium (CEF4) ile sayfa kaynağını veya javascript çalıştırıp dönen değeri nasıl? adeministrator 8 706 04-04-2020, Saat: 19:56
Son Yorum: Ahmet İPEKÇİ
  Hal Kayıt Sistemi Web Servis eyln 48 12.605 17-02-2020, Saat: 11:11
Son Yorum: eyln



Konuyu Okuyanlar: 1 Ziyaretçi