Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Web Servis (WDSL) veri çekmeye çalışıyorum
#1
Web servis dökümanında örnek olarak fatura kayıtlarını çekmek için bir örnek vermişler bu örnek ve WDSL import ettiğim şekle göre. 


 Döküman da verilen örnek :
SalesPurchase sService=new SalesPurchase();
InvoiceSearchParameter sSearchParam=new InvoiceSearchParameter();
sSearchParam.InvoiceNumber =”1234567”;
SalesPurchaseService.InvoiceParameter[] sParams= sService.SalesInvoiceSearch (sSearchParam,”Authorization_Key_Değeri”, ”Active_Company_Kodu”,”Active_Branch_Kodu”);

  Kendi Yazdığım Delphi 10.4 kodlarım :
var
SearchParam : InvoiceSearchParameter;
Fatura_List : ArrayOfInvoiceParameter2;
ilktarih,sontarih : TXSDateTime;

begin

ilktarih:=TXSDateTime.Create;
sontarih:=TXSDateTime.Create;
ilktarih.AsDateTime:=StrToDate('01.01.2022');
sontarih.AsDateTime:=StrToDate('31.01.2022');
SearchParam.BeginDate:=ilktarih;
SearchParam.EndDate:=sontarih;
Fatura_List:= GetSalesPurchaseSoap.SalesInvoiceSearch(SearchParam, Key, 'XXXX','XXXXX');

end;

Çalıştırınca hata alıyorum direk. istediğim fatura_list dizesine faturaları eklemek.

Aşağıda WDSL importtan gelen değerler.

function  SalesInvoiceSearch(const SearchParameter: InvoiceSearchParameter; const AuthorizationKey: string; const ActiveCompany: string; const ActiveBranch: string): ArrayOfInvoiceParameter2; stdcall;


// ************************************************************************ //
 // XML       : InvoiceSearchParameter, global, <complexType>
 // Namespace : http://tempuri.org/
 // ************************************************************************ //
 InvoiceSearchParameter = class(InvoiceParameter2)
 private
   FBeginDate: TXSDateTime;
   FEndDate: TXSDateTime;
   FBeginDateTime: TXSDateTime;
   FEndDateTime: TXSDateTime;
   FBeginDocumentDate: TXSDateTime;
   FEndDocumentDate: TXSDateTime;
 public
   destructor Destroy; override;
 published
   property BeginDate:         TXSDateTime  Index (IS_NLBL) read FBeginDate write FBeginDate;
   property EndDate:           TXSDateTime  Index (IS_NLBL) read FEndDate write FEndDate;
   property BeginDateTime:     TXSDateTime  Index (IS_NLBL) read FBeginDateTime write FBeginDateTime;
   property EndDateTime:       TXSDateTime  Index (IS_NLBL) read FEndDateTime write FEndDateTime;
   property BeginDocumentDate: TXSDateTime  Index (IS_NLBL) read FBeginDocumentDate write FBeginDocumentDate;
   property EndDocumentDate:   TXSDateTime  Index (IS_NLBL) read FEndDocumentDate write FEndDocumentDate;
 end;

 ArrayOfInvoiceParameter2 = array of InvoiceParameter2;   { "http://tempuri.org/"[GblCplx] }
 ArrayOfInvoiceParameter =  type ArrayOfInvoiceParameter2;      { "http://tempuri.org/"[GblElm] }

// ************************************************************************ //
 // XML       : InvoiceParameter, global, <complexType>
 // Namespace : http://tempuri.org/
 // ************************************************************************ //
 InvoiceParameter2 = class(BaseParameter)
 private
   FLines: ArrayOfInvoiceLineParameter;
   FLines_Specified: boolean;
   FDiscounts: ArrayOfInvoiceDiscountParameter;
   FDiscounts_Specified: boolean;
   FRefDocuments: ArrayOfInvoiceRefDocumentParameter;
   FRefDocuments_Specified: boolean;
   FDiscountItemDetails: ArrayOfInvoiceDiscountItemDetailParameter;
   FDiscountItemDetails_Specified: boolean;
   FPaymentPlans: ArrayOfInvoicePaymentPlanParameter;
   FPaymentPlans_Specified: boolean;
   FDiscountPrints: ArrayOfInvoiceDiscountPrintParameter;
   FDiscountPrints_Specified: boolean;
   FProgressPayments: InvoiceProgressPaymentParameter;
   FProgressPayments_Specified: boolean;
   FInvoiceNumber: string;
   FInvoiceNumber_Specified: boolean;

   Çok uzun bir liste burada kestim ben..
Faydalanılmayan bilgi, harcanmayan ve hiç kimseye hayrı dokunmayan define gibidir.

Hz. Muhammed (sav.)
Cevapla
#2
Ne hatası aldığını yazmamışsın. Ayrıca gördüğüm kadarıyla SearchParam : InvoiceSearchParameter; sınıfını create etmemişsin bundan olabilir mi?
SearchParam := InvoiceSearchParameter.Create(); gibi
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla
#3
(31-01-2022, Saat: 08:54)3ddark Adlı Kullanıcıdan Alıntı: Ne hatası aldığını yazmamışsın. Ayrıca gördüğüm kadarıyla SearchParam : InvoiceSearchParameter; sınıfını create etmemişsin bundan olabilir mi?
SearchParam := InvoiceSearchParameter.Create(); gibi

Sınıfı create edince çalıştı, 
 
dizeye verileri çekmeyi başardımmı onuda bilmiyorum bir hata almıyorum

test etmek için 

Edit1.Text:=Fatura_List[0].InvoiceNumber;
   

access vialation şeklinde bir hata alıyorum.
Faydalanılmayan bilgi, harcanmayan ve hiç kimseye hayrı dokunmayan define gibidir.

Hz. Muhammed (sav.)
Cevapla
#4
Dönen sonucunuzu (Fatura_List) debug edin. Inspect ile bakın bence birşeyler geliyor fakat farklı erişim kısmında sorununuz olabilir veya tip hatanız olabilir.
Sonuç içinde hata mesajı veya uyarı gönderilmiş olabilir. InvoiceParameter2 -> BaseParameter sınıfından miras almış. Belki sunucu yanıtı bu BaseParameter içinde ortak olan mesaj hata uyarıları gönderiyor olabilir.

En uygunu sizin bunu Debug ile gelen sonucu ayrıntılı olarak incelemenizdir.
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla
#5
(01-02-2022, Saat: 08:27)3ddark Adlı Kullanıcıdan Alıntı: Dönen sonucunuzu (Fatura_List) debug edin. Inspect ile bakın bence birşeyler geliyor fakat farklı erişim kısmında sorununuz olabilir veya tip hatanız olabilir.
Sonuç içinde hata mesajı veya uyarı gönderilmiş olabilir. InvoiceParameter2 -> BaseParameter sınıfından miras almış. Belki sunucu yanıtı bu BaseParameter içinde ortak olan mesaj hata uyarıları gönderiyor olabilir.

En uygunu sizin bunu Debug ile gelen sonucu ayrıntılı olarak incelemenizdir.

Debug edip Inspect ile bakınca boş  Evaluate ile bakınca 0 değeri var. 

Baseparameter  bu sınıftan miras almış ama ben bu sınıfı nasıl kontrol edebilirim fatura_list bomboş geliyor.

 BaseParameter = class(TRemotable)
 private
   FRecordState: string;
   FRecordState_Specified: boolean;
   FCode: string;
   FCode_Specified: boolean;
   FDescription1: string;
   FDescription1_Specified: boolean;
   FBranchId: string;
   FBranchId_Specified: boolean;
   FCompanyId: string;
   FCompanyId_Specified: boolean;
   FCreatedDateTime: TXSDateTime;
   procedure SetRecordState(Index: Integer; const Astring: string);
   function  RecordState_Specified(Index: Integer): boolean;
   procedure SetCode(Index: Integer; const Astring: string);
   function  Code_Specified(Index: Integer): boolean;
   procedure SetDescription1(Index: Integer; const Astring: string);
   function  Description1_Specified(Index: Integer): boolean;
   procedure SetBranchId(Index: Integer; const Astring: string);
   function  BranchId_Specified(Index: Integer): boolean;
   procedure SetCompanyId(Index: Integer; const Astring: string);
   function  CompanyId_Specified(Index: Integer): boolean;
 public
   destructor Destroy; override;
 published
   property RecordState:     string       Index (IS_OPTN) read FRecordState write SetRecordState stored RecordState_Specified;
   property Code:            string       Index (IS_OPTN) read FCode write SetCode stored Code_Specified;
   property Description1:    string       Index (IS_OPTN) read FDescription1 write SetDescription1 stored Description1_Specified;
   property BranchId:        string       Index (IS_OPTN) read FBranchId write SetBranchId stored BranchId_Specified;
   property CompanyId:       string       Index (IS_OPTN) read FCompanyId write SetCompanyId stored CompanyId_Specified;
   property CreatedDateTime: TXSDateTime  Index (IS_NLBL) read FCreatedDateTime write FCreatedDateTime;
 end;
Faydalanılmayan bilgi, harcanmayan ve hiç kimseye hayrı dokunmayan define gibidir.

Hz. Muhammed (sav.)
Cevapla
#6
Dışarıdan küçük bir kod parçası üzerinden yorum yapması zor. Ama hatasız sonuç alıyorsanız.
Parametre kısmında hatanız veya girdiğiniz parametreye uyan sunucu tarafından kayıt olmayabilir.
Tarih formatını sunucu farklı kullanıyor olabilir.
Ayrıca sunucu üzerinden bildiğiniz bir kaydı fatura numarası ile çağırın.

Bunun için SOAP Servis dokümanı varsa bunu iyice okuyun.
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla
#7
(02-02-2022, Saat: 08:07)3ddark Adlı Kullanıcıdan Alıntı: Dışarıdan küçük bir kod parçası üzerinden yorum yapması zor. Ama hatasız sonuç alıyorsanız.
Parametre kısmında hatanız veya girdiğiniz parametreye uyan sunucu tarafından kayıt olmayabilir.
Tarih formatını sunucu farklı kullanıyor olabilir.
Ayrıca sunucu üzerinden bildiğiniz bir kaydı fatura numarası ile çağırın.

Bunun için SOAP Servis dokümanı varsa bunu iyice okuyun.

Bende sizinle aynı fikirdeyim şuan acaba girdiğim paramatredeki tarih de bir hata var ve boş kayıt mı dönüyor bana diye düşündüm. 

bu gün firmadan fatura numrası alıp dediğiniz gibi bir test yapacağım sonuç gelirse parametre değerlerinde bir hata yapıyor olabilirim. 

SAP programı üzerinde işlem yapan bir web servis bu parametre hatası olabilir dediğiniz gibi.
Faydalanılmayan bilgi, harcanmayan ve hiç kimseye hayrı dokunmayan define gibidir.

Hz. Muhammed (sav.)
Cevapla
#8
SAP tarafinda tarih formati genelde 2022-02-03 seklindedir, bazen de direk 20220203 seklinde yayinlanir.
Cevapla
#9
(02-02-2022, Saat: 08:07)3ddark Adlı Kullanıcıdan Alıntı: Dışarıdan küçük bir kod parçası üzerinden yorum yapması zor. Ama hatasız sonuç alıyorsanız.
Parametre kısmında hatanız veya girdiğiniz parametreye uyan sunucu tarafından kayıt olmayabilir.
Tarih formatını sunucu farklı kullanıyor olabilir.
Ayrıca sunucu üzerinden bildiğiniz bir kaydı fatura numarası ile çağırın.

Bunun için SOAP Servis dokümanı varsa bunu iyice okuyun.

Direk bir fatura numarası ile veri çekmeyi denedim hata vermiyor ama kaydın içi boş geliyor. 
Servis adresi incelmek isterseniz : https://vp.golfdondurma.com.tr/SAASWebSe...chase.asmx

var
SParams : InvoiceParameter2;
begin

SParams := InvoiceParameter.Create;
SParams := GetSalesPurchaseSoap.SalesGet('2022020111588959', Key, 'XXXXX','XXXX');
Edit2.Text := sparams.InvoiceNumber;
end;

yukarıdaki tek fatura kaydı sorgulamak için servis dökümanında yazan 

SalesGet() fonksiyonu ise, parametre olarak fatura numarası, AuthorizationKey, ActiveCompany ve ActiveBranch parametrelerini almaktadır. Bu fonksiyon, sadece fatura numarası ile arama yapılabildiği için tek bir satış verisini tutan InvoiceParameter classı döndürmektedir. 

Örnek Kod: 
SalesPurchase sService=new SalesPurchase(); 
SalesPurchaseService.InvoiceParameter iParam= sService. SalesGet(“Verisi_Aranacak_Satış_Verisi_Fatura_Numarası”,”Authorization_Key_Değeri”, ”Active_Company_Kodu”,”Active_Branch_Kodu”);
Faydalanılmayan bilgi, harcanmayan ve hiç kimseye hayrı dokunmayan define gibidir.

Hz. Muhammed (sav.)
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Rest servis api uygulaması yapma tuna 13 1.354 17-10-2025, Saat: 18:40
Son Yorum: tuna
  Veri Tabanına Kontrollü Kayıt Yaptırma bünyamin68 20 4.238 08-06-2025, Saat: 09:40
Son Yorum: izmaimen
  Modern Servis Uygulama İskeleti Tuğrul HELVACI 22 24.682 02-05-2025, Saat: 14:30
Son Yorum: bakyuz
  Web servis konusunda yardım Patriot 7 1.407 24-01-2025, Saat: 21:28
Son Yorum: enigma
  wsdl veri çekme hatası tuna 6 1.360 15-01-2025, Saat: 16:54
Son Yorum: hi_selamlar



Konuyu Okuyanlar: 1 Ziyaretçi