Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Klien SOAP Saya Gagal Memuatkan WSDL pada Beberapa Versi PHP?

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

Barbara Streisand
Barbara Streisandasal
2024-11-08 19:59:02908semak imbas

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();
}

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!

Kenyataan:
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