Konuyu Oyla:
  • Derecelendirme: 2/5 - 2 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Hal Kayıt Sistemi Web Servis
#1
Merhaba Arkadaşlar,
Hal kayıt web servis sistemine kayıt ile ilgili desteğe ihtiyacım var.Fiddler ile xml veriyi aldım ve olması gereken ile karşılaştırdım yinede sorun devam ediyor.
Aldığım hata

Object reference not set to an instance of an object.


[Ars=delphi]var
servis : IBildirimService;
gonder  :BaseRequestMessageOf_ListOf_BildirimKayitIstek;
cevap  :BaseResponseMessageOf_ListOf_BildirimKayitCevap;
istk: ArrayOfBildirimKayitIstek;


begin

servis:= GetIBildirimService(false,'',nil);
try
screen.Cursor := crHourGlass;

gonder       :=   BaseRequestMessageOf_ListOf_BildirimKayitIstek.Create;

SetLength(istk,1);
istk[0] := BildirimKayitIstek.Create;
gonder.istek:=istk;

gonder.UserName := _username;
gonder.Password := _pass;
gonder.ServicePassword := _webpass ;



gonder.istek[0].UniqueId :='****-6**56';
gonder.istek[0].BildirimTuru :=206;
gonder.istek[0].ReferansBildirimKunyeNo :=0;

gonder.istek[0].BildirimciBilgileri := BildirimciBilgileriDTO2.Create;
gonder.istek[0].BildirimciBilgileri.KisiSifat :=6; //Tüccar hal içi


gonder.istek[0].IkinciKisiBilgileri := IkinciKisiBilgileriDTO2.Create;
gonder.istek[0].IkinciKisiBilgileri.CepTel := '*******';  //+
gonder.istek[0].IkinciKisiBilgileri.Eposta := '';  //+
gonder.istek[0].IkinciKisiBilgileri.TcKimlikVergiNo := '*******'; //+
gonder.istek[0].IkinciKisiBilgileri.YurtDisiMi := false; //+
gonder.istek[0].IkinciKisiBilgileri.KisiSifat := 4; //+
gonder.istek[0].IkinciKisiBilgileri.AdSoyad := '**** *****'; //+

gonder.istek[0].BildirimMalBilgileri :=  BildirimMalBilgileriDTO.Create;
gonder.istek[0].BildirimMalBilgileri.UretimIlId:= 15;
gonder.istek[0].BildirimMalBilgileri.UretimIlceId:= 855;
gonder.istek[0].BildirimMalBilgileri.UretimBeldeId:= 785;
gonder.istek[0].BildirimMalBilgileri.MalinNiteligi:= 1;  
gonder.istek[0].BildirimMalBilgileri.MalinKodNo:= 319 ;
gonder.istek[0].BildirimMalBilgileri.UretimSekli:= 28;
gonder.istek[0].BildirimMalBilgileri.MalinCinsiId:= 1265;
gonder.istek[0].BildirimMalBilgileri.MiktarBirimId:= 74;
gonder.istek[0].BildirimMalBilgileri.MalinMiktari:= 250;
gonder.istek[0].BildirimMalBilgileri.MalinSatisFiyat:= 0.50;
gonder.istek[0].BildirimMalBilgileri.GelenUlkeId:= 0;
gonder.istek[0].BildirimMalBilgileri.AnalizeGonderilecekMi:=false;


gonder.istek[0].MalinGidecekYerBilgileri :=  MalinGidecekYerBilgileriDTO2.Create;
gonder.istek[0].MalinGidecekYerBilgileri.GidecekYerIsletmeTuruId:=7;// hal içi işyeri
gonder.istek[0].MalinGidecekYerBilgileri.GidecekIsyeriId:=47477;
gonder.istek[0].MalinGidecekYerBilgileri.GidecekUlkeId:=0;
gonder.istek[0].MalinGidecekYerBilgileri.GidecekYerIlId:=70;
gonder.istek[0].MalinGidecekYerBilgileri.GidecekYerIlceId:=78;
gonder.istek[0].MalinGidecekYerBilgileri.GidecekYerBeldeId:=45794;
gonder.istek[0].MalinGidecekYerBilgileri.BelgeNo:='F0002';
gonder.istek[0].MalinGidecekYerBilgileri.BelgeTipi:=208;
gonder.istek[0].MalinGidecekYerBilgileri.AracPlakaNo:='******';





cevap  := servis.BildirimServisBildirimKaydet(gonder) ;

showmessage(IntToStr(cevap.Sonuc[0].YeniKunyeNo));
try
    showmessage(CEVAP.HataKodlari[0].mesaj);
    except

      showmessage(CEVAP.IslemKodu);
   end;


  finally
   Screen.Cursor := crDefault;

END;
[/ars]




Saygılar.
Cevapla
#2
Dolması gereken bazı bilgileri doldurmamışsın..
Amatör Küme Bilgisayar Programcısı
WWW
Cevapla
#3
Delphi tarafında gönderdiğiniz XML ile, ekteki Fiddler dosyasını karşılaştırabilirsiniz.


Ek Dosyalar
.zip   Hal.zip (Dosya Boyutu: 5,09 KB / İndirme Sayısı: 39)
WWW
Cevapla
#4
Ne kadar açıklayıcı kod yazmışsınız maşallah,

Ben olsam Bu kodu,
gonder.istek[0].BildirimMalBilgileri.UretimBeldeId:= 785; 

Böyle yazardım.
Send.Req[0].NPI.BeldeId:= 785; 


Değişkenlerimi olabildiğince kısa tutuyorum, Hatta eğer yapabiliyorsam tek harf kullanıyorum Smile
procedure hihaho;
var T:TStringList;
begin
  T := TStringList.Create;
  try
    T.Add('');
  finally
  T.Free;
  end;
end;
WWW
Cevapla
#5
Merhaba,
Konu biraz içeriğin dışına çıkmış gibi olacak ama;
Kodun revizyonu ve sürdürülebilirliği için kullanılan değişken veya metod isimleri, kullanım amacını yansıtacak nitelikte ve işi anımsatıcı nitelikte olmalıdır.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#6
Evet; programlamanın en temel kurallarındandır: Değişken isimleri mümkün olduğunca açıklayıcı olmalıdır. Sonradan kodu okuyan için anlaması kolay olacak isimler seçilmelidir.
Faydalı:
http://wiki.c2.com/?GoodVariableNames
http://www.makinggoodsoftware.com/2009/0...variables/
There's no place like 127.0.0.1
WWW
Cevapla
#7
(29-11-2017, Saat: 21:52)yhackup Adlı Kullanıcıdan Alıntı: Ne kadar açıklayıcı kod yazmışsınız maşallah,

Ben olsam Bu kodu,
gonder.istek[0].BildirimMalBilgileri.UretimBeldeId:= 785; 

Böyle yazardım.
Send.Req[0].NPI.BeldeId:= 785; 


Değişkenlerimi olabildiğince kısa tutuyorum, Hatta eğer yapabiliyorsam tek harf kullanıyorum Smile
procedure hihaho;
var T:TStringList;
begin
  T := TStringList.Create;
  try
    T.Add('');
  finally
  T.Free;
  end;
end;

bu degisken isimleri web servisten gelen isimler sanirim.
ayrica cokta kisa degisken isimleri kullanmanizi onermem.
ne uzun , ne kisa. anlasilabilecek kadar.
WWW
Cevapla
#8
Öncelikle cevap veren tüm arkadaşlara teşekkürler.

(29-11-2017, Saat: 20:52)barutali Adlı Kullanıcıdan Alıntı: Dolması gereken bazı bilgileri doldurmamışsın..

Tüm alanları kontrol ettim ancak yine tekrar bakarım...

(29-11-2017, Saat: 21:00)ismailkocacan Adlı Kullanıcıdan Alıntı: Delphi tarafında gönderdiğiniz XML ile, ekteki Fiddler dosyasını karşılaştırabilirsiniz.

Teşekkür ederim.Bakacağım.

(29-11-2017, Saat: 22:00)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
Konu biraz içeriğin dışına çıkmış gibi olacak ama;
Kodun revizyonu ve sürdürülebilirliği için kullanılan değişken veya metod isimleri, kullanım amacını yansıtacak nitelikte ve işi anımsatıcı nitelikte olmalıdır.

Bu değişken isimleri web servisten geliyor...
Cevapla
#9
(30-11-2017, Saat: 09:14)eyln Adlı Kullanıcıdan Alıntı:
(29-11-2017, Saat: 22:00)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
Konu biraz içeriğin dışına çıkmış gibi olacak ama;
Kodun revizyonu ve sürdürülebilirliği için kullanılan değişken veya metod isimleri, kullanım amacını yansıtacak nitelikte ve işi anımsatıcı nitelikte olmalıdır.

Bu değişken isimleri web servisten geliyor...

Vermiş olduğum cevaptan olumsuz bir anlam çıkardınız galiba.
Kodlama, isimlendirme standartlarına uygun ve son derece anlaşılır yapılmış.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#10
(30-11-2017, Saat: 09:23)Fesih ARSLAN Adlı Kullanıcıdan Alıntı:
(30-11-2017, Saat: 09:14)eyln Adlı Kullanıcıdan Alıntı: Bu değişken isimleri web servisten geliyor...

Vermiş olduğum cevaptan olumsuz bir anlam çıkardınız galiba.
Kodlama, isimlendirme standartlarına uygun ve son derece anlaşılır yapılmış.

Fesih bey sorun yok. yhackup adlı arkadaştan alıntı yapacaktım yanlış oldu.Kodları anlaşılmaz bulan oydu.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Delphi güncellemesi ve JVMemoryData bileşeninde aynı anda birden çok kayıt boreas 0 82 10-03-2020, Saat: 18:03
Son Yorum: boreas
  .Net servis, nesne tipi parametre alan metod ... Gürcan 1 296 16-01-2020, Saat: 14:24
Son Yorum: sadettinpolat
  Tabloya Kontrollü Kayıt bünyamin68 7 663 24-10-2019, Saat: 17:18
Son Yorum: serdar
  Delphi'den SP ile kayıt Aktolgali 4 646 30-09-2019, Saat: 23:05
Son Yorum: Aktolgali
  [ÇÖZÜLDÜ]Server İşletim Sisteminde Çalışan Windows Servis te is not a valid date Hata theSinan 9 976 28-08-2019, Saat: 10:05
Son Yorum: adelphiforumz



Konuyu Okuyanlar: 1 Ziyaretçi