PHP SOAP hata kodlama harici referans

1 Cevap php

Ben belirli bir haber öğe hakkındaki bilgileri alıp SOAP bir işlevi, kullanmaya çalışıyorum. Sorun ise, beklenen sonuçları, sadece aa garip bir hata alamadım olmasıdır. Ben PHP5'ta yerleşik SOAP istemci kullanıyorum.

Benim hatadır:

Fatal error: Uncaught SoapFault exception: [Client] SOAP-ERROR: Encoding: External reference 'https://newsclient.omxgroup.com/cdsPublic/viewDisclosure.action?disclosureId=379485&messageId=454590' in /home/**/public_html/**/updatenews3.php:15

Benim kod:

<?php
    $login = '***';
    $password = '***';   
    $client = new SoapClient(
    'https://newsclient.omxgroup.com/wsdl/DisclosureNewsService.wsdl',
    array(
        'login' => $login,
        'password' => $password
    ));
    $param = array('lastPublicationId' => 361825);
    $result = $client->fetchNews($param);
?>

Hata bir sonucu bulunan tüm lastPublicationId için aynıdır. PHP (hata mesajında ​​olduğu URL) XML cevapta yerde bulunan bir linki yüklemeye çalışıyor, ve bunu erişemiyorsanız gibi görünüyor. Ben bu çok googled olsa da, ben herhangi bir çözüm bulamıyor. Ben bulabilirim tek şey bu PHP'nin bir önceki sürümünde bir hata olarak bildirilmiştir görünüyor, ama ben PHP 5.2.9 kullanıyorum çünkü hata PHP 5.2.2 ifade eder, ben 'bu can düşünüyorum t var olmak. Ben bu hatanın neden olduğu ve-karakter şüphelenen ediyorum?

WSDL dosyası burada bulunabilir: https://newsclient.omxgroup.com/wsdl/DisclosureNewsService.wsdl

Birisi bu hatayı biliyor ve herhangi bir çözümün biliyor mu?

1 Cevap

Bu XML $client->fetchNews($param); düzgün kaçtı edilmediğinde tarafından iade edilen mümkündür - öncelenmemiş & gibi görünüyor hata mesajında ​​gösterilen URL.

En iyi şey, XML izleme ve son tepkisini baskı açarak, iade ediliyor tam olarak ne olduğunu kontrol etmek muhtemelen:

$client = new SoapClient(
'https://newsclient.omxgroup.com/wsdl/DisclosureNewsService.wsdl',
array(
    'login' => $login,
    'password' => $password,
    'trace' => 1
));
$param = array('lastPublicationId' => 361825);

try {
    $result = $client->fetchNews($param);
}
catch (SoapFault $sf) {
    print '<pre>';
    // print the exception
    print_r($sf);

    // print the XML response
    print $client->__getLastResponse();
}

Bir geçici çözüm (sunucu geçersiz XML döndüren ise) durum yakalamak için yukarıdaki benzer bir kod kullanmaktır. Daha sonra el (__getLastResponse() kullanarak) XML döndü almak ve dönen ve uygulama kalanında kullanmadan önce, (örneğin htmlenties veya regexpi kullanarak) kendiniz temizleyebilirsiniz.