Soap Nasıl Kullanılır

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Soap Nasıl Kullanılır

Mesaj gönderen lazio »

merhabalar, ben delphi nin webservices demolarındaki PostTool demosu ile tc kimlik no öğrenmeye çalışıyorum ama Response edilen sonuç yalnızca http://tckimlik.nvi.gov.tr/Web/ Ana sayfasın. benmi hata yapıyorum yoksa sayfadamı hata var.
yaptığım işlem şöyle;
http://tckimlik.nvi.gov.tr/kpspublic.as ... kNoDogrula de anlatıldığı gibi
POST /kpspublic.asmx HTTP/1.1
Host: tckimlik.nvi.gov.tr
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://kps.nvi.gov.tr/WS/Public/TCKimlikNoDogrula"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<TCKimlikNoDogrula xmlns="http://kps.nvi.gov.tr/WS/Public">
<tcKimlikNo>long</tcKimlikNo>
</TCKimlikNoDogrula>
</soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<TCKimlikNoDogrulaResponse xmlns="http://kps.nvi.gov.tr/WS/Public">
<TCKimlikNoDogrulaResult>
<TCKimlikNo>long</TCKimlikNo>
<Ad>string</Ad>
<Soyad>string</Soyad>
<DogumYil>int</DogumYil>
</TCKimlikNoDogrulaResult>
</TCKimlikNoDogrulaResponse>
</soap:Body>
</soap:Envelope>
ilgili kodları PostSoap programında deniyorum.
PostSoap programının URL kısmına

Kod: Tümünü seç

http://tckimlik.nvi.gov.tr
Soap Action Kısmına

Kod: Tümünü seç

http://kps.nvi.gov.tr/WS/Public/TCKimlikNoDogrula
ve Request kısmınada

Kod: Tümünü seç

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <TCKimlikNoDogrula xmlns="http://kps.nvi.gov.tr/WS/Public">
      <tcKimlikNo>123546789</tcKimlikNo>
    </TCKimlikNoDogrula>
  </soap:Body>
</soap:Envelope>
yazıp Post düğnesine basıyorum ama dediğim gibi Request te http://tckimlik.nvi.gov.tr/Web/ Ana sayfası geliyor. yanlışlık nerede acaba..
kolay gelsin
DeveloperToolKit

..::|YeşilMavi|::..
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Makaleler bölümüne SOAP ile TC kimlik no almayı örnekleyen bir uygulama göndermiştim. İncelemek ister misin?
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

evt. en kısa zamanda deneyeceğim. teşekkürler..
DeveloperToolKit

..::|YeşilMavi|::..
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@coderlord UTF-8 ile Türkçe karakter gönderme üzerine bir güncelleme yapacaktın. Yoğunluğun bitince bekliyoruz... :wink:
Resim
Resim ....Resim
Kullanıcı avatarı
yamanyazılım
Üye
Mesajlar: 7
Kayıt: 24 Ara 2004 01:45

Mesaj gönderen yamanyazılım »

Arkadaşlar, UTF-8 için formun üzerine WebServices Tabından bir tane HTTPRio componenti atıp HTTPWebnode Bölümünden UseUTF8inHeader seçeneğini true yapmanız sanırım yeterli oluyor, ben öyle kullanıyorum ama isterseniz bu komponenti hiç atmayıp ürettiğiniz unitin sourcelarına bu seçeneği ekleyebilirsiniz (coderlord arkadaşımın yazısında bahsettiği otomatik üretilen unitten bahsediyorum)
Saygılarımla
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

@mrmcop taş atıyorsun gibi geldi :) Doğru çok uzadı bu iş. Bugün güncellenmiş bir sürümü yöneticimize gönderirim.

@yamanyazılım'ın belirttiği gibi halledeceğim zaten. Makalemin sonunda belirtmiştim bu düzeltmeyi.
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

kareşlerim herhangi bir güncellemeye gerek yok ...delphi 2005 ile proje açın ve delphi32 dönüştürün...direk kullanın
Siz hayal edin...Biz yapalım TuannaSoft...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@Coderlord

- Şimdi ben bu cevabı kabul etmiyorum... :lol: :lol: :lol:

- Daha önce özetle "SOAP ile hallet" demiştin biz de bahsettiğin gibi yapıp halletmiştik.

- Asıl SOAP kullanmadan generate edilen Unit üzerinde ne gibi bir değişiklik yapılabiliri sormuştum zaten. Örnekli olarak göstermiştim hani ... :?: :?: :?:

- İşte bu şekilde de eklemiştim... Asıl merak ettiğim, header neden en altta ...

Kod: Tümünü seç

initialization
  InvRegistry.RegisterInterface(TypeInfo(KPSPublicWebServiceSoap), 'http://kps.nvi.gov.tr/WS/Public', 'utf-8');
şeklinde verildiği halde ekstra bir operasyone gerek duyduğuydu...
neyse şakayı bir kenara bırakalım... Unit üzerindeki değişiklik ise aşağıdaki şekilde.... Soap koymadan bunu yapmak yeterli...

Kod: Tümünü seç

  if HTTPRIO = nil then
    RIO := THTTPRIO.Create(nil)
  else
    RIO := HTTPRIO;
  try
    // Eklenecek satır şudur...
    {--->} RIO.HTTPWebNode.UseUTF8InHeader := True; {<---}
    Result := (RIO as KPSPublicWebServiceSoap);
    if UseWSDL then
    begin
Çalışmalarınızda başarılar...
Resim
Resim ....Resim
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Dinamik oluşturulan unit'te bu değişikliği yapmak istemedim. Çünkü 2. kez birisi yarattığında "a bu çalışmıyor gene" olacaktı. HTTPRIO kullanımını da göstermiş oldum arkadaşlara bu sayede.

@mrmcop RegisterInterface bildiğim kadarıyla, SOAP invoker'a, class'ların, kullanılabilmesi için register edilmesine yarıyor. Bu verileri de XML WDML dosyasından alıyor. oradaki 'utf-8' zannedersem WDML'den geliyor ve invoker için pek bir anlamı yok veya gelen verinin UTF-8 ile kodlanmış geleceğini invoker'a söylüyor. Bizden gidenin değil. Biz nasıl istersek öyle göndeririz.

WDML'de zaten bunu tanımlayan birşey olmadığından ilk yaptığım hatalı çalışıyordu. Sitenin herhangi bir yerinde UTF8 ile kodlamalısınız demiyordu. XML dosyada da bunu belirten herhangi birşey yoktu. Daha sonra zannedersem bu Mernis projesinde çalışan, hatta bunun kodlarını yazmış, DelphiTurk admin'i Tansu Türkoğlu, benim bu kodu yayınlamamdan sonra, kendisi de kimlik no'yu alan bir SOAP uygulaması kodu yayınladı ve hatamın başlığın UTF-8 olarak gitmemesi olduğunu söyledi.

Bu arada makalenin .NET 'te de işe yaramasına sevindim. Aslında Nevrona'nın (Indy'nin firması) open source bir SOAP bileşeni var. Delphi'nin her sürümünde SOAP bileşenleri yok. IndySOAP'u kurcalarsam eğer ve olursa bu iş bir makale daha düşünüyorum. SOAP bileşeni olmayan arkadaşlar için.

İyi günler herkese.
Cevapla