Aug
08
2010
0

Web servislerinde hata ayıklama

“looks like we got no XML document” hatasını aldığımızda , öylesine kalakalırız ilk başlarda. Çünkü web servisin çalışması için gerekli kodları yazmış ve gerekli ayarlamaları yapmıştık. Neden çalışmıyor ki bu meret, yok mu bunun neden çalışmadığını anlamanın yolu. Var tabiki.

Gönderilen her SOAP çağrısını (SOAP Request) ve cevabını (SOAP Response) izleyebiliriz. Bunun için yapmamız gereken yaptığımız çağrıyı try catch bloğu içerisine yazarak, hata olduğu zaman dönen cevabı yazdırmak.

Daha önceki yazıda verdiğim örnekten yola çıkarak anlatmaya çalışayım.

Sunucu tarafını burda vermeyeceğim, çünkü daha önceki yazıda mevcut. Şimdi istemci tarafındaki kodu yazalım :

1
2
3
4
5
6
7
8
9
10
11
$istemci=new SoapClient(null,
                  array('uri'=>'http://ersindogan-testuri',
                 'location'=>'http://localhost/test/sunucu.php',
                  'trace'=>1));
try {
var_dump($istemci->gonder('mesaj','konu','kime'));
}catch(Exception $e){
 echo '<xmp><pre>',
        print_r($istemci->__getLastResponse(),true),
        '</pre></xmp>';
}

Eski örneğe eklediğimiz iki farklı şey var :
Biri try-catch blogu içeirisine yazdık kodlarımızı.
İkinci olarak, hata olduğunda dönen cevabı yazdırarak sorunun nerde olduğunu anlamaya çalışıyoruz. Ayrıca unutmadan söyleyeyim, SOAP isteğinden dönen cevabı görebilmek için , SOAPClient nesnemizin kurucusuna parametre olarak “trace” anahtarını vererek, bunun açık olmasını sağlamalıyız. Aksi taktirde dönen cevabı ekrana bastırmaya kalktığımızda hiçbirşey göremeyiz.
Aynı durum “xmp” etiketi için de geçerli, eğer cevabımızı bu etiketler arasında yazdırmazsak , gene aynı biçimde dönen cevabı ekrana basmaya kalktığımızda hiçbirşey göremeyiz. “xmp” etiketi, w3c tarafından kullanımı önerilmeyen, kodları etkisizleştirerek salt metin biçiminde gösterilmesini sağlayan bir html etiketi. Her nekadar kullanılmaması önerilse de, bu tip hata ayıklama işlemlerinde çok yardımcı oluyor.

Web servisler üzerine birşeyler yazarken, hata ayıklamayı yazmayı unutmuşum. Bana gelen bir epostadan sonra , bu konu üzerinde birşeyler yazmak istedim. Umarım açıklayıcı yazabilmişimdir.

Güzel günler dileği ile…

Powered by WordPress | conserio | xoppla | TheBuckmaker