UETDS wsdl'i ile ilgili çalışma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
sunye
Üye
Mesajlar: 101
Kayıt: 24 Ağu 2004 03:49
Konum: izmir

UETDS wsdl'i ile ilgili çalışma

Mesaj gönderen sunye » 14 Oca 2019 10:19

Merhaba,

Ulaştırma bakanlığı yeni bir sistem geliştirdi. UETDS olarak adlandırdı. Bunla ilgili bir wsdl yayımladı.

https://servis.turkiye.gov.tr/services/ ... arizi?wsdl

bu servis ile ilgili daha önce çalışan oldu mu?

Kullanımı nasıl?

Soap UI diye bir program üzerinden test edityorum, sıkıntı yok ancak delphi üzerinden nasıl bağlantı sağlayabilirim?

Sistemin çalışması için ip adresinizin sisteme tanıtılı olması gerekiyor, değilse yeki hatası alıyorsunuz.
Bildiğim tek şey, hiç bir şey bilmediğim.

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

Re: UETDS wsdl'i ile ilgili çalışma

Mesaj gönderen sabanakman » 14 Oca 2019 01:22

Hangi delphi sürümünüz var bilmiyorum ama yeni nesil sürümleri kullanmanızı öneririm. Projeniz delphide açıkken, File -> New -> WebServices altından WSDL Importer (ya da Component - Import WSDL) seçeneği ile gelen pencereden wsdl servis adresini girip ileri ileri diyerek işlemlerinizi tamamlayın. Bununla otomatik olarak bu servisi kullanan arayüzler (interface) oluşacaktır. Bunları kullanmak da sınıfları kullanmak gibidir ama create ve destroy işlemlerini siz yapmazsınız. WSDL importuyla oluşan arayüzde ilgili serviste tanımlı metotları barındırır ve bunları kullanarak ilgili servisi çalıştırırsınız. Tek yapmanız gereken Get...Service isminde oluşan fonksiyonu kullanmaktır. Mesela verdiğiniz bağlantıdan UdhbUetdsAriziService = interface arayüzü ve GetUdhbUetdsAriziService fonksiyonları oluşturuldu. Bunu

Kod: Tümünü seç

var wsUETDS:UdhbUetdsAriziService; sSonuc:String;
begin
  wsUETDS:=GetUdhbUetdsAriziService;
  sSonuc:=wsUETDS.servisTest('Servis çalışıyor mu?');
  ShowMessage(sSonuc);
end;
şeklinde kullanabilirsiniz. Tabi diğer tüm metotlar ve parametreleri organize kısmı sizde, şimdiden kolay gelsin.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .

Kullanıcı avatarı
sunye
Üye
Mesajlar: 101
Kayıt: 24 Ağu 2004 03:49
Konum: izmir

Re: UETDS wsdl'i ile ilgili çalışma

Mesaj gönderen sunye » 14 Oca 2019 01:40

Merhaba,

Kod: Tümünü seç

var
	  Port : UdhbUetdsAriziService;
begin
  HTTPRIO1.HTTPWebNode.UserName:='999999';
  HTTPRIO1.HTTPWebNode.Password:='999999testtest';
  Port := Uetdsarizi.GetUdhbUetdsAriziService(True,'',HTTPRIO1);
  if Port.servisTest('Servis var mı?')='Servis var mı? OK' then
      ShowMessage('Servis var')
    else begin
      ShowMessage('Servis yok, tekrar deneyin');
    end;	  
Bu şekilde bağlantıyı test ettim, çalışıyor.

Bağlanırken kendi kullanıcıkontrol2 clası olmasına rağmen oradan bilgi girişi yapamadım. httprio nesnesinden sağladım bilgileri.
birde seferekle metoduna bilgileri girdim ancak bir türlü gönderemedim, buna yardımcı olabilir misiniz?

Kod: Tümünü seç

  
  	  DSeferEkle :=SeferEkle.Create;
          FormatSettings.LongDateFormat:='yyyy-mm-dd';
          FormatSettings.ShortDateFormat:='yyyy-mm-dd';
          DSeferEkle:=SeferEkle.Create;
          DSeferEkle.wsuser.kullaniciAdi:=UETDSAdi;
          DSeferEkle.wsuser.sifre:=UETDSSifre;
          DSeferEkle.ariziSeferBilgileriInput.aracPlaka:=SQLOperasyonARAC_PLAKA.AsString;
          DSeferEkle.ariziSeferBilgileriInput.hareketTarihi:=DateToStr(SQLOperasyonTARIH.Date);
          DSeferEkle.ariziSeferBilgileriInput.hareketSaati:=SQLOperasyonSAAT.Value;
          DSeferEkle.ariziSeferBilgileriInput.aracTelefonu:='';
          DSeferEkle.ariziSeferBilgileriInput.firmaSeferNo:=SQLOperasyonYILAYSIRA.Value;
          DSeferEkle.ariziSeferBilgileriInput.seferBitisTarihi:=DateToStr(SQLOperasyonBITIS_TARIHI.Value);
          DSeferEkle.ariziSeferBilgileriInput.seferBitisSaati:=SQLOperasyonBITISSAATI.AsString;
Bildiğim tek şey, hiç bir şey bilmediğim.

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

Re: UETDS wsdl'i ile ilgili çalışma

Mesaj gönderen sabanakman » 14 Oca 2019 01:58

Bir hata mesajı geliyor mu? Çalışmıyor denilen mesele duruma göre değişir.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .

Kullanıcı avatarı
sunye
Üye
Mesajlar: 101
Kayıt: 24 Ağu 2004 03:49
Konum: izmir

Re: UETDS wsdl'i ile ilgili çalışma

Mesaj gönderen sunye » 14 Oca 2019 02:06

sabanakman yazdı:
14 Oca 2019 01:58
Bir hata mesajı geliyor mu? Çalışmıyor denilen mesele duruma göre değişir.
oluşturduğum verileri gönderemedim ki hata mesajı alabileyim :shock:

Kod: Tümünü seç

  Port:=UETDSArizi.GetUdhbUetdsAriziService.seferEkle(DSeferEkle.ariziSeferBilgileriInput);
  ShowMessage(Port.seferEkle.return.sonucMesaji);
  
doğru yoldamıyım onu bile bilemedim :(
Bildiğim tek şey, hiç bir şey bilmediğim.

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

Re: UETDS wsdl'i ile ilgili çalışma

Mesaj gönderen sabanakman » 14 Oca 2019 02:33

Doğru gibi ama get..service fonksiyonunu sürekli çalıştırmak yerine program bir kere arayüzü çeksin onu kullansın mantığıyla devam etmekte fayda var. Bir de parametre ve sonuç tiplerine dikkat etmek gerekebilir.

Kod: Tümünü seç

var wsUETDS:UdhbUetdsAriziService; seferEkleParam:seferEkle; seferEklemeSonucu:seferEkleResponse;
begin
  wsUETDS:=GetUdhbUetdsAriziService;
  seferEklemeSonucu:=seferEkle(seferEkleParam);
  ShowMessage(seferEklemeSonucu.return.sonucMesaji);
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .

Kullanıcı avatarı
sunye
Üye
Mesajlar: 101
Kayıt: 24 Ağu 2004 03:49
Konum: izmir

Re: UETDS wsdl'i ile ilgili çalışma

Mesaj gönderen sunye » 14 Oca 2019 02:47

Kod: Tümünü seç

  seferEklemeSonucu:=seferEkle(seferEkleParam);
bu satırda aşağıdaki hatayı veriyor.

[dcc32 Error] Unit1.pas(40): E2010 Incompatible types: 'seferEkleResponse' and 'seferEkle'
Bildiğim tek şey, hiç bir şey bilmediğim.

Kullanıcı avatarı
sunye
Üye
Mesajlar: 101
Kayıt: 24 Ağu 2004 03:49
Konum: izmir

Re: UETDS wsdl'i ile ilgili çalışma

Mesaj gönderen sunye » 14 Oca 2019 06:31

Sorunu çözdüm,
@sabanakman çok teşekkür ederim.


kodu da buraya bırakayım ilerde lazım olur;

Kod: Tümünü seç

var
  Port : UdhbUetdsAriziService;
  Mesaj : String;
  SEkle : seferEkle;
  SEkleSonuc : seferEkleResponse;
  SKullanici : uetdsYtsUser;
  SBilgiler : uetdsAriziSeferBilgileriInput;

Kod: Tümünü seç

  KA:='999999';
  Sifre:='999999testtest';
  HTTPrio.HTTPWebNode.UserName:=KA;
  HTTPrio.HTTPWebNode.Password:=Sifre;
  try
    Port:=UETDSArizi.GetUdhbUetdsAriziService;
    if Port.servisTest('Durum')<>'Durum OK' then begin
      ShowMessage('Servis çalışmıyor');
      Exit;
    end;
  except
    ShowMessage('Kullanıcı bilgileri hatalı');
    Exit;
  end;

  SKullanici:=uetdsYtsUser.Create;
  SKullanici.kullaniciAdi:=ka;
  SKullanici.sifre:=Sifre;

  SBilgiler:=uetdsAriziSeferBilgileriInput.Create;
  SBilgiler.aracPlaka:='35ABC123';
  SBilgiler.seferAciklama:='Sefer Açıklama';
//  SBilgiler.hareketTarihi.AsDateTime:=Date;
  SBilgiler.hareketSaati:='12:00';
  SBilgiler.aracTelefonu:='02324265';
  SBilgiler.firmaSeferNo:='12';
//  SBilgiler.seferBitisTarihi.AsDateTime:=Date;
  SBilgiler.seferBitisSaati:='17:00';

  SEkle:=seferEkle.Create;
  SEkle.wsuser:=SKullanici;
  SEkle.ariziSeferBilgileriInput:=SBilgiler;

  SEkleSonuc:=seferEkleResponse.Create;

  try
    SEkleSonuc:=Port.seferEkle(SEkle);
    ShowMessage(SEkleSonuc.return.sonucMesaji);
  finally
    
  end;
Bildiğim tek şey, hiç bir şey bilmediğim.

selim54
Üye
Mesajlar: 1
Kayıt: 06 Şub 2019 09:56

Re: UETDS wsdl'i ile ilgili çalışma

Mesaj gönderen selim54 » 06 Şub 2019 10:00

Merhaba
Php üzerinde bir çalışma yapıyorum.fakat denemelerim de sürekli olarak aşağıda ki hatayı alıyorum

"500 Yetki Hatası http://gw.esb.turkiye.gov.tr Servis kullanımı yetkisi için servis sağlayıcısı kurum ile görüşünüz"
SoapUI üzerinden de test ettim yine aynı hatayı veriyor.

https://servis.turkiye.gov.tr/services/ ... arizi?wsdl
999999 - 999999testtest
Test işlemini sunucuda yapıyorum
Sorun ne olabilir acaba bilginiz varsa yardımcı olabilirmisiniz.

hayricelik
Üye
Mesajlar: 1
Kayıt: 30 Mar 2019 07:52

Re: UETDS wsdl'i ile ilgili çalışma

Mesaj gönderen hayricelik » 30 Mar 2019 07:55

Delphi Soap ile basic auth işlemi yapacaksınız login ve password parametrelerine ayrıca nonwsdl modunda kullanılacak.

Delphide bütün sınıflar create edilmeden değişken ve sonuçlarda access violent hatası alırsınız

Kullanıcı avatarı
sunye
Üye
Mesajlar: 101
Kayıt: 24 Ağu 2004 03:49
Konum: izmir

Re: UETDS wsdl'i ile ilgili çalışma

Mesaj gönderen sunye » 30 May 2019 09:31

WSDL'i test edebilmek için bakanlığa IP adresinizi kaydettirmeniz gerekli.
Bildiğim tek şey, hiç bir şey bilmediğim.

Cevapla