Mengapa Klien SOAP Saya Gagal Memuatkan WSDL pada Beberapa Versi PHP?

Barbara Streisand
Lepaskan: 2024-11-08 19:59:02
asal
944 orang telah melayarinya

Why Does My SOAP Client Fail to Load a WSDL on Some PHP Versions?

SOAP-ERROR: Parsing WSDL: Couldn't Load from - Ralat

Dalam kes ini, pengguna menghadapi ralat SOAP semasa cuba menggunakan WSDL daripada perkhidmatan web. Ralat secara khusus menyatakan bahawa klien SOAP tidak dapat memuatkan WSDL daripada URL yang disediakan.

Kunci untuk menyelesaikan isu ini terletak pada tingkah laku klien SOAP yang berbeza pada pelbagai versi PHP. Sesetengah versi PHP mengetepikan penghantaran maklumat ejen pengguna HTTP, yang membawa kepada masalah apabila cuba mengakses perkhidmatan web.

Penyelesaian

Berikut ialah penyelesaian untuk menetapkan ejen pengguna secara eksplisit menggunakan strim konteks:

try {
    $opts = array(
        'http' => array(
            'user_agent' => 'PHPSoapClient'
        )
    );
    $context = stream_context_create($opts);

    $wsdlUrl = 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl';
    $soapClientOptions = array(
        'stream_context' => $context,
        'cache_wsdl' => WSDL_CACHE_NONE
    );

    $client = new SoapClient($wsdlUrl, $soapClientOptions);

    $checkVatParameters = array(
        'countryCode' => 'DK',
        'vatNumber' => '47458714'
    );

    $result = $client->checkVat($checkVatParameters);
    print_r($result);
}
catch(Exception $e) {
    echo $e->getMessage();
}
Salin selepas log masuk

Wawasan Tambahan

Perlu diperhatikan bahawa isu itu juga boleh dikaitkan dengan masalah dengan perkhidmatan web itu sendiri. Dengan menguji URL menggunakan curl dengan dan tanpa ejen pengguna, didapati bahawa permintaan IPv6 tanpa rentetan ejen pengguna gagal manakala permintaan IPv4 dengan atau tanpa rentetan ejen pengguna berjaya.

Pemerhatian ini mencadangkan isu keserasian antara perkhidmatan web dan konfigurasi khusus hos Linux pengguna.

Atas ialah kandungan terperinci Mengapa Klien SOAP Saya Gagal Memuatkan WSDL pada Beberapa Versi PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan