Hal Kayıt Sistemi Web Servis

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
eyalin
Üye
Mesajlar: 126
Kayıt: 09 May 2005 08:08

Hal Kayıt Sistemi Web Servis

Mesaj gönderen eyalin »

Merhaba Arkadaşlar,
Hal kayıt web servis sistemine kayıt ile ilgili desteğe ihtiyacım var.Bu konuda tecrübeli arkadaşların desteğini rica ediyorum.Sitedeki konuları inceledim ancak sonuç alınmamış.Eğer çalışan bir örnek varsa paylaşırsanız sevinirim.
Saygılar.
ertank
Kıdemli Üye
Mesajlar: 1648
Kayıt: 12 Eyl 2015 12:45

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen ertank »

Merhaba,

En son sorunu çözdüğünüzü bildirmiştiniz.

Hal kayıt web sistemi diğer web sistemlerinden farklı değildir. Yapamadığınız şeyi bildirirseniz yardımcı olmaya çalışabiliriz. Ancak soruna göre kaynak kod incelemek gerekebilir.

Daha önce bahsettiğiniz test/demo sistem bilgilerini paylaşarak sorunu çözüm sadece servisi değiştirmeniz duruma göre mümkün olabilir. Ancak canlı sistemin test/demo sisteme göre farkı sadece URL adresi değil ise bu kez canlı sistem bilgilerine veya sizin anlaşılır açıklayıcı hata tanımınıza gerek olacaktır.

Forumda yıllardır web servis kullanan kişiler var.
eyalin
Üye
Mesajlar: 126
Kayıt: 09 May 2005 08:08

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen eyalin »

Merhaba ,
İlk mesajımda bağlantıyla ilgili bir problem vardı.Bu hata test sistemi user bilgileri ile alakalıymış...Onu çözdük.
Web servisine sitedeki örneklere göre bağlantı yapıp tüm servislerden veri alabiliyoruz.Ancak asıl olay web servisi üzerinden bildirim yapmak yani kayıt yapmak ve oluşan künye numarasını almak...İncelediğim konularda aynı hata belirtilmiş ve çözümsüz kalmış.

Teşekkürler.

Aldığım hata şu
Object reference not set to an instance of an object.
Kodlar :

Kod: Tümünü seç

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 :='12345';
gonder.Istek[0].BildirimTuru :=195; // Satın alma
gonder.Istek[0].ReferansBildirimKunyeNo :=0;

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

gonder.Istek[0].IkinciKisiBilgileri := IkinciKisiBilgileriDTO.Create;
gonder.Istek[0].IkinciKisiBilgileri.CepTel := '5555555555';
gonder.Istek[0].IkinciKisiBilgileri.Eposta := 'a@a-gida.com';
gonder.Istek[0].IkinciKisiBilgileri.TcKimlikVergiNo := '1111111111';
gonder.Istek[0].IkinciKisiBilgileri.YurtDisiMi := false;
gonder.Istek[0].IkinciKisiBilgileri.KisiSifat := 4; //Üretici

gonder.Istek[0].BildirimMalBilgileri :=  BildirimMalBilgileriDTO.Create;
gonder.Istek[0].BildirimMalBilgileri.UretimIlId:= 1; //adana
gonder.Istek[0].BildirimMalBilgileri.UretimIlceId:= 455;// ceyhan
gonder.Istek[0].BildirimMalBilgileri.UretimBeldeId:= 2086; //çarşı
gonder.Istek[0].BildirimMalBilgileri.MalinNiteligi:= 3;  //toplama
gonder.Istek[0].BildirimMalBilgileri.MalinKodNo:= 284; //acur;
gonder.Istek[0].BildirimMalBilgileri.UretimSekli:= 28; //geleneksel
gonder.Istek[0].BildirimMalBilgileri.MalinCinsiId:= 284; // acur
gonder.Istek[0].BildirimMalBilgileri.MiktarBirimId:= 74; // KG
gonder.Istek[0].BildirimMalBilgileri.MalinMiktari:= 100;
gonder.Istek[0].BildirimMalBilgileri.MalinSatisFiyat:= 0.80;
gonder.Istek[0].BildirimMalBilgileri.GelenUlkeId:= 201; // Türkiye
gonder.Istek[0].BildirimMalBilgileri.AnalizeGonderilecekMi:=false;

gonder.Istek[0].MalinGidecekYerBilgileri :=  MalinGidecekYerBilgileriDTO.Create;
gonder.Istek[0].MalinGidecekYerBilgileri.GidecekYerIsletmeTuruId:=7;// hal içi işyeri
gonder.Istek[0].MalinGidecekYerBilgileri.GidecekIsyeriId:=7;// hal içi işyeri
gonder.Istek[0].MalinGidecekYerBilgileri.GidecekUlkeId:=201;
gonder.Istek[0].MalinGidecekYerBilgileri.GidecekYerIlId:=1;
gonder.Istek[0].MalinGidecekYerBilgileri.GidecekYerIlceId:=455;
gonder.Istek[0].MalinGidecekYerBilgileri.GidecekYerBeldeId:=2086;
gonder.Istek[0].MalinGidecekYerBilgileri.BelgeNo:='F0002';
gonder.Istek[0].MalinGidecekYerBilgileri.BelgeTipi:=207; //İRSALİYE




cevap  := servis.BildirimServisBildirimKaydet(gonder) ;

 //memo1.Lines.Add(IntToStr(cevap.Sonuc[0].YeniKunyeNo));
try
     showmessage(CEVAP.IslemKodu);
     except

       showmessage(CEVAP.IslemKodu);
    end;


   finally
    Screen.Cursor := crDefault;

END;
ertank
Kıdemli Üye
Mesajlar: 1648
Kayıt: 12 Eyl 2015 12:45

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen ertank »

eyalin yazdı: 25 Kas 2017 10:50 Aldığım hata şu
Object reference not set to an instance of an object.
Çok özetle hata sebebi web servis istediği bilgiyi istediği şekilde alamıyor. Bu hatanın kaynağı aşağıdakilerden birisi olabilir:
- Web servise gönderdiğiniz bir nesnenin null olması veya oluşturulmamış olması durumu. Bu durumda Web servis wsdl dosyasından kullandığınız nesneleri incelemeniz gerekli. Oluşturulması gereken alt nesneler olabilir.
- Web servis parametrelerinin olması gerektiği gibi olmaması. Mesela bir parametre içeriği sizden json formatında bekleniyor olabilir. Bununla ilgili web servis dökümanlarını ve örneklerini incelemeniz gerekir.
- Bazen kullanılmayan parametrelerin sıfırlanması (string değerlerin içi boşaltılması, rakamların sıfırlanması vb.) gerekli olabilir. Bu gereklilik kullanılan web servise özel bir gerekliliktir. Oluşturduğunuz nesnelerin ilk değerlerini ayarlamanız gerekebilir.

Her halukarda çözümü web servis döküman ve örneklerine bakarak ve sizin web servise gönderdiğiniz XML dosyasını WireShark gibi bir uygulama ile inceleyerek tespit edebilirsiniz.
eyalin
Üye
Mesajlar: 126
Kayıt: 09 May 2005 08:08

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen eyalin »

Her halukarda çözümü web servis döküman ve örneklerine bakarak ve sizin web servise gönderdiğiniz XML dosyasını WireShark gibi bir uygulama ile inceleyerek tespit edebilirsiniz.
Öneri için teşekkür ederim.Wireshark ile çözmeye çalışıyorum.Fakat paketleri SSL ile şifreli gönderdiği için paketin içeriğini izleyemedim.Dediğiniz gibi adım adım tekrar bakacağım gönderilen verilere...
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen mkysoft »

SOAPUI ile mock servis yapabilirsiniz. Mock servis sanal bir soap servis yaratarak gelen istekleri yakalamaktadır.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen sabanakman »

İyi günler. Fiddler ile gerekli ayar ve yetki verilirse bu tür uygulamalardan meydana gelen akışları şifresi çözülmüş bir şekilde takip edebiliyorsunuz. Bunun için programı kurup çalıştırdıktan sonra Tools -> Options ile gelen Pencerede HTTPS sayfası alındaki Capture HTTPS CONNECTs ve altındaki Decrypt HTTPS traffic ayarlarını işaretli olarak değiştirin. O esnada bazı sertifikaların yetkilendirmesi için onay isteyecek, bunları da onaylamak gerekiyor haliyle. Bu ayarlardan sonra programı bir kapat aç yapmak gerekiyor. Artık https bağlantılı akışları da Fiddler üzerinden çözülmüş bir biçimde takip edebileceksiniz. Kolay gelsin, iyi çalışmalar.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
eyalin
Üye
Mesajlar: 126
Kayıt: 09 May 2005 08:08

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen eyalin »

sabanakman beyin bahsettiği şekilde xml verilerine ulaştım.Olması gereken xml ile karşılaştırdım.Aşağıdaki kodlarda belirttiğim yer fazladan eklenmiş.
Sebebini çözemedim? Sanırım bu fazla satırdan kaynaklanıyor hata....

Kod: Tümünü seç

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body xmlns:NS2="http://schemas.datacontract.org/2004/07/GTB.HKS.Bildirim.Model" xmlns:NS1="http://schemas.datacontract.org/2004/07/GTB.HKS.Bildirim.ServiceContract">
<BaseRequestMessageOf_ListOf_BildirimKayitIstek xmlns="http://www.gtb.gov.tr//WebServices">
<Istek>
<BildirimKayitIstek xsi:type="NS1:BildirimKayitIstek">
<BildirimKayitIstek xmlns="" xsi:nil="true"/>   /// burası fazla
</Istek>
<Password>*******</Password>
<ServicePassword>******</ServicePassword>
<UserName>******</UserName>
</BaseRequestMessageOf_ListOf_BildirimKayitIstek>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
ertank
Kıdemli Üye
Mesajlar: 1648
Kayıt: 12 Eyl 2015 12:45

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen ertank »

Import ettiğiniz wsdl dosyasını paylaşmanız mümkün mü?
eyalin
Üye
Mesajlar: 126
Kayıt: 09 May 2005 08:08

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen eyalin »

Ertan bey ,
Ekte paylaştım.
Teşekkür ederim.
Dosya ekleri
BildirimService.rar
(14.43 KiB) 330 kere indirildi
ertank
Kıdemli Üye
Mesajlar: 1648
Kayıt: 12 Eyl 2015 12:45

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen ertank »

İlk etapta gözüme çarpanlar oluşturulan sınıfların hatalı olduğu. Aşağıdaki ilgili satırları bulup düzeltmek gerekli.

Kod: Tümünü seç

istk[0] := BildirimKayitIstek2.Create;
gonder.Istek[0].BildirimciBilgileri := BildirimciBilgileriDTO2.Create;
gonder.Istek[0].IkinciKisiBilgileri := IkinciKisiBilgileriDTO2.Create;
gonder.Istek[0].BildirimMalBilgileri :=  BildirimMalBilgileriDTO2.Create;
gonder.Istek[0].MalinGidecekYerBilgileri :=  MalinGidecekYerBilgileriDTO2.Create;
Ayrıca mevcut hafıza kaçağını engellemek için aşağıdaki değişikliklerin yapılması gerekli:

Kod: Tümünü seç

    try
      cevap  := servis.BildirimServisBildirimKaydet(gonder) ;
    except
      cevap := nil;
      raise;
    end;

    //memo1.Lines.Add(IntToStr(cevap.Sonuc[0].YeniKunyeNo));
    ShowMessage(CEVAP.IslemKodu);
  finally
    gonder.Free();
    if cevap <> nil then cevap.Free();

    Screen.Cursor := crDefault;
  end;
Ancak yukarıdaki düzeltmelerden sonra sistemden hala aynı hata geliyor.
eyalin
Üye
Mesajlar: 126
Kayıt: 09 May 2005 08:08

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen eyalin »

Ertan bey ilginiz için teşekkürler.Aynen dediğiniz değişiklikleri yaptım ancak sorun devam ediyor...
ertank
Kıdemli Üye
Mesajlar: 1648
Kayıt: 12 Eyl 2015 12:45

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen ertank »

Anladığım kadarıyla parametrelerden en az bir tanesi hatalı. Referans olarak tanımladığınız (rakam değer, yanına açıklama yazılmış) parametrelerde hata olmasından şüphe ediyorum. Ancak emin değilim.

Aşağıdaki eksiklikleri farkettim. Bunları eklemekte sorunu çözmedi.

Kod: Tümünü seç

Send.Istek[0].IkinciKisiBilgileri.AdSoyad := 'ali veli';
Send.Istek[0].MalinGidecekYerBilgileri.AracPlakaNo := '34ABC56';
Web servis hizmetini veren kişilere ulaşmanız gerekecek.
zeki0775
Üye
Mesajlar: 1
Kayıt: 11 Haz 2020 05:20

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen zeki0775 »

selamlar konuyu okudum ve hal kayıt web servis adresini denedim ancak web servis adresi değişmiş galiba. hal kayıt web servis adresini bilen var ise paylaşabilirmi lütfen? buraya dikkat web servis adresini istiyorum lütfen.
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen xozcanx »

Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Cevapla