21-08-2017, Saat: 11:44
İ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.
Servis (wsdl) dönen değeri işleme
|
21-08-2017, Saat: 11:44
İ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.
21-08-2017, Saat: 12:13
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.
21-08-2017, Saat: 12:30
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.
21-08-2017, Saat: 13:28
(Son Düzenleme: 21-08-2017, Saat: 13:41, Düzenleyen: ismailkocacan.)
(21-08-2017, Saat: 11:15)esistem Adlı Kullanıcıdan Alıntı:Merhaba(21-08-2017, Saat: 11:11)Cyber Adlı Kullanıcıdan Alıntı: Merahaba Hocam, 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.
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/" }
21-08-2017, Saat: 21:35
(Son Düzenleme: 21-08-2017, Saat: 21:36, Düzenleyen: ismailkocacan.)
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..
22-08-2017, Saat: 09:36
İ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.
22-08-2017, Saat: 09:57
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; |
« Önceki Konu | Sonraki Konu »
|
Konu ile Alakalı Benzer Konular | |||||
Konular | Yazar | Yorumlar | Okunma | Son Yorum | |
Web Servis SOAP | eyln | 19 | 854 |
22-03-2024, Saat: 13:06 Son Yorum: eyln |
|
net.tcp web servis clienti yazma | erkankurtaga | 3 | 310 |
27-02-2024, Saat: 00:01 Son Yorum: mkysoft |
|
kayıtta para değeri hatası. | ercanskose | 2 | 455 |
26-07-2023, Saat: 10:46 Son Yorum: delphiman |
|
web servis header sorunu | eyln | 2 | 500 |
26-06-2023, Saat: 13:08 Son Yorum: eyln |
|
Servis Uygulamasının "Ayrıntılar" Bölümünde Görünmesi | berk06 | 1 | 524 |
20-02-2023, Saat: 13:50 Son Yorum: clayhuseyin |