Kurtulmak için nasıl "yakalanmamış SoapFault istisna: biz hiçbir XML belgesi var gibi [Client] görünüyor ..."

8 Cevap php

(Ben wsdls gerekir çünkü, ve PHP SOAP uzantısı wsdls üretemiyor) I sunucu tarafında NuSOAP kullanarak dinamik bir site için iş mantığı geliştirmeye çalışıyorum ve istemci tarafında PHP SOAP extenstion.

Ancak, ben bile giriş ve getRole işlevleri doğru alınamıyor. I müşteri çağırmak çalıştığınızda, ben mesajı şu olsun

Uncaught SoapFault exception: [Client] looks like we got no XML document in [some paths]...

Wsdl sunucu tarafında mevcut mu, ve istemci (ben wsdl için yanlış url koymak zaman, ben bir hata alıyorum) okumak gelmez.

Herkes yardımcı olabilir?

8 Cevap

WSDL kendisi veya sunucu tarafından döndürülen tepki ya - istemci bazı geçersiz XML alır gibi görünüyor. TRUE olarak ayarlanır trace seçeneği ile müşteri çağırmak ve __getLastRequest() and __getLastResponse() yöntemleri ile alınan gerçek XML gönderme / kontrol etmeye çalışın.

Sadece args için () Döşeme kullanın.

         $objectRequette =  trim($_POST['Requette']) ;
$client = new SoapClient(null,
        array('location' => 'http://your.php',
                'uri'=>'your option'));
$result = $client->__soapCall('Misyka', array("$objectRequettea"));

Ben sadece benzer bir sorun vardı; benim servis echo bazı hata ayıklama verilerini ing edildi çıkıyor. Ben echo çizgilerin hepsi kaldırıldı ve o amele para cezası.

Ben aynı sorun var ve ben bu ile çözüldü:

Php sunucusu soap dosyası apache xml yanıt önce BOM işareti (3 byte) geri göndermek neden BOM ile kodlamak utf8 vardır.

Utf8 OUT İLE BOM işareti ile php dosya sabun sunucusu Encode.

Ignacio Gutierrez Torrero

Bazı zamanlar bir BOM Bu tür bir sorunu yaratan bazı ekstra karakterleri oluşturabilirsiniz.

Herhangi UTF BOM var olup olmadığını tespit etmek, bu bkz link.

Şansını SoapServer sınıfın sonunda bazı sondaki boşluk var vardır. blog post daha fazla bilgi için aşağıdaki bir göz atınız: http://arnekroeger.blogspot.com/2011/02/php-soap-error-looks-like-we-got-no-xml.html

Ben ">" etiketinden sonra boş satırlar ile bir komut dosyası dahil benim durumumda, bu hata ortaya çıktı.

Sorunu çözer bu satırları sil

Ben bu sorunu çözmek için bir yol var. Bu oldukça çözüm değildir, ama çalışır ...

Benim mantis sunucu herhangi bir değişiklik yapamaz, nasıl bunu yapmak karar verdim ...

Önce SoapFault susturmak zorunda:

try {
    $client = new SoapClient('http://www.mymantisaddress.com/api/soap/mantisconnect.php?wsdl', array('trace'=> 1, 'exceptions' => 0));
    $result = $client->__soapCall($function_name, $args);
} catch (SoapFault $e) {
    //$result = array(
    //    'erro' => $e->faultstring
    //);
}

İkincisi, ben orada benim dize başlayacak kontrolü karakter sondaki bu üç oldu, bu yüzden kaldırıldı ettik kaydetti ettik:

$str = substr($client->__getLastResponse(), 3) . "pe>"; print $str;

Üçüncüsü, ben eksik olduğunu çünkü, benim dizenin sonunda "> pe" koymak ettik.