Daha önce AX 2012 için yazdığım örneğini bu sefer de 2009 için yazdım. Servisi yazarken Microsoft'un ilgili white page sayfasından faydalandım. White page artık olmayan bir servis için yazılmış ama yine de işimi gördü.
Öncelikle AOT->References->Servis başvurusu ekle çalıştırın:
WSDL URL kısmına https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx?WSDL yazın.
Ben .NET kodu ad alanına TCSorgula yazdım. Başvuru adı kısmında da aynen otomatik yazılan TCSorgula değerini değiştirmeden bıraktım.
Daha sonra aşağıdaki metodu yazdım:
public server static boolean Sorgula(Int64 _TCKimlikNo,str _ad,str _soyad, int _dogumYili, boolean _interActive = false)
{
TCSorgula.KPSPublicSoapClient cl;
boolean ret;
System.Exception ex;
str st;
;
try
{
new InteropPermission(InteropKind::ClrInterop).assert();
cl = new TCSorgula.KPSPublicSoapClient("KPSPublicSoap");
ret = cl.TCKimlikNoDogrula(_TCKimlikNo,_ad,_soyad,_dogumYili);
CodeAccessPermission::revertAssert();
}
catch(Exception::CLRError)
{
exceptionTextFallThrough();
}
if (_interActive)
{
if (ret)
info("TC kimlik doğrulandı!..");
else
warning("TC kimlik doğrulanamadı!..");
}
return ret;
}
Kodu çalıştırmak için yazdığım job:
static void TCKimlikTest(Args _args)
{
;
TCKimlik::Sorgula(11111111111,"METİN","EMRE",1911,true);
}
TC kimlik doğrulama servisi isim veya doğum tarihi hatalı olduğunda false değeri döndürürken TC kimlikno hatalı olduğu durumlarda nedense exception atıyor. AX 2012 ile bu exception dönüş değeri içinde "T.C. Kimlik No alanına girdiğiniz değer geçerli bir T.C. Kimlik Numarası değildir" değerini kontrol ederek hatalı kimlik no mu yoksa başka bir hata mı döndüğünü kontrol edebiliyordum. 2009 ile malesef bunu başaramadım. Yani ya TC kimlikno düzgün ya da hatalı veya servis çalışmıyor şeklinde bilgi alabiliyorum.
Eğer VS kurulu değilse oluşturulmuş servisi yapılandırmak için .NET framework SDK'yı indirebilirsiniz.
Axapta - Usable functions for queries
5 yıl önce
Hiç yorum yok:
Yorum Gönder