@
enigma yardımın için çok teşekkürler. Senin bu cevabın ve daha önce benzer konuda (
https://www.delphican.com/showthread.php?tid=5900 ) yazdığın kodlar sayesinde hatanın Delphi 7'nin WSDL importeri'nin yanlış başlıklar göndermesi olduğunu anladım. Senin burada yukarıdaki cevabın sayesinde SOAPUI'nin test yaparken oluşturduğu XML dosyasını , yine linkini verdiğim diğer cevabındakilerle birlikte kullanarak HTTPReqResp1 componenti le hiç olmazsa Ürün Kodu gönderip gelen sonuçları yine XML'den parse edip, okuyup bir ClientDataSet'e aktarabildim. Aslında direkt web servis içindeki servisi (maddeler_Servisi) ve o servis cevabından dönen sonuçları (maddeler.No, Maddeler.Description, Maddeler.DigerSonuc gibi) kullanmak isterdim ama olmadı.
Web Servis konusunda SOAPUI gibi harici programlarla çalışmanın önemi burada ortaya çıkıyor. Bu konu ile ilgili örnek olarak şunu verebilirim : SOAPUI ile gönderdiğim test sorgusunda dönen XML şöyle:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:mad="urn:microsoft-dynamics-schemas/page/maddeler">
<soapenv:Header/>
<soapenv:Body>
<mad:Read>
<mad:No>HF09.23.19.0563</mad:No>
</mad:Read>
</soapenv:Body>
</soapenv:Envelope>
ama Delphi'nin HTTPRIO komponentinin SOAPRequest sonucu :
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<NS1:Read xmlns:NS1="urn:microsoft-dynamics-schemas/page/maddeler">
<No xsi:type="xsd:string"></No>
</NS1:Read>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
No alanına Edit1.Text değerini atamama rağmen bir şekilde boş gitmiş, ben de boşu boşuna uğraşıp, web servisten gelen hata mesajlarını çözmeye çalışmışım.
Bir de şunu farkettim; Delphi 7'de New-Web Services- WSDL İmporter yaparak web servis adresini yazıp .pas dosyasını oluştururken, Options kısmından Code Generation ve Other Options seçeneklerinin tamamını işaretlememek gerekiyor. Oluşan .pas dosyaya lüzumsuz çok fazla satır dolduruyor, boğulup kalıyorsunuz. Gereksiz seçenekleri deneme-yanılma yöntemiyle teker teker kaldırmak en iyi yöntem imiş.
Bu daha ilk web servis okuma çalışmam. Diğer web servislerde Read yanında create, Create Multiple, Update ve Delete fonksiyonları/özellikleri olduğunu görüyorum. Özellikle @
enigma senden ricam RequestRespons kullanarak okuduğumuz gibi nasıl kayıt ve güncelleme yapıyorsun, veya bunun için hangi yolları kullanıyorsun, bu konuda da (mümkünse örnek kodlarla) yardımcı olursan sevinirim. Senin 2 satır cevabın ufkumu açtı diyebilirim.
Yorum yazan ve yardımcı olmaya çalışan diğer arkadaşlara da teşekkür ederim. @
mkysoft 'un belirttiği wsldimport.exe'nin güncellenmis versiyonunu malum sebeplerden indiremedim, ama internette arayacağım.
Konu henüz kapanmadı, yazma ve güncelleme konusunda da yaşadıklarımı yazacağım buraya.