Hal Kayıt Sistemi Web Servis

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

Hal Kayıt Sistemi Web Servis

Mesaj gönderen eyalin » 23 Kas 2017 08:08

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
Üye
Mesajlar: 1032
Kayıt: 11 Eyl 2015 11:45

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen ertank » 24 Kas 2017 10:28

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: 125
Kayıt: 09 May 2005 07:08

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen eyalin » 25 Kas 2017 09:50

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
Üye
Mesajlar: 1032
Kayıt: 11 Eyl 2015 11:45

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen ertank » 25 Kas 2017 01:04

eyalin yazdı:
25 Kas 2017 09: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: 125
Kayıt: 09 May 2005 07:08

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen eyalin » 26 Kas 2017 08:13

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: 2850
Kayıt: 25 Ağu 2003 11:35
Konum: İstanbul
İletişim:

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen mkysoft » 26 Kas 2017 11:06

SOAPUI ile mock servis yapabilirsiniz. Mock servis sanal bir soap servis yaratarak gelen istekleri yakalamaktadır.

Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 2981
Kayıt: 17 Nis 2006 07:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen sabanakman » 26 Kas 2017 01:12

İ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: 125
Kayıt: 09 May 2005 07:08

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen eyalin » 26 Kas 2017 09:45

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
Üye
Mesajlar: 1032
Kayıt: 11 Eyl 2015 11:45

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen ertank » 26 Kas 2017 10:19

Import ettiğiniz wsdl dosyasını paylaşmanız mümkün mü?

eyalin
Üye
Mesajlar: 125
Kayıt: 09 May 2005 07:08

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen eyalin » 27 Kas 2017 08:09

Ertan bey ,
Ekte paylaştım.
Teşekkür ederim.
Dosya ekleri
BildirimService.rar
(14.49 KiB) 16 kere indirildi

ertank
Üye
Mesajlar: 1032
Kayıt: 11 Eyl 2015 11:45

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen ertank » 27 Kas 2017 08:52

İ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: 125
Kayıt: 09 May 2005 07:08

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen eyalin » 28 Kas 2017 08:06

Ertan bey ilginiz için teşekkürler.Aynen dediğiniz değişiklikleri yaptım ancak sorun devam ediyor...

ertank
Üye
Mesajlar: 1032
Kayıt: 11 Eyl 2015 11:45

Re: Hal Kayıt Sistemi Web Servis

Mesaj gönderen ertank » 28 Kas 2017 09:11

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.

Cevapla