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.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
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.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#14
(21-08-2017, Saat: 11:15)esistem Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(21-08-2017, Saat: 11:11)Cyber Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.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ı: 6)
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
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.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
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
  EFinans -> E-Arşiv WSDL alma malitutuncu 0 103 20-09-2019, Saat: 10:41
Son Yorum: malitutuncu
  [ÇÖZÜLDÜ]Server İşletim Sisteminde Çalışan Windows Servis te is not a valid date Hata theSinan 9 341 28-08-2019, Saat: 10:05
Son Yorum: adelphiforumz
  Veri tabanına aynı değeri tekrarlama arsl01 21 1.290 03-05-2019, Saat: 11:34
Son Yorum: edo
  Delphi XE6'da oluşan XML XE'de farklı. WSDL Wizard hata yapar mı ? boreas 7 709 22-04-2019, Saat: 12:55
Son Yorum: boreas
  Servis uygulması üzerinden komut satırı çalıştırmak ahmet_sinav 9 835 06-03-2019, Saat: 22:22
Son Yorum: ahmet_sinav



Konuyu Okuyanlar: 1 Ziyaretçi