Rumah > pembangunan bahagian belakang > tutorial php > Mengapa SoapClient saya gagal menghuraikan WSDL pada pelayan pengeluaran tetapi berfungsi pada pelayan tempatan saya?

Mengapa SoapClient saya gagal menghuraikan WSDL pada pelayan pengeluaran tetapi berfungsi pada pelayan tempatan saya?

Barbara Streisand
Lepaskan: 2024-11-09 20:50:02
asal
413 orang telah melayarinya

Why does my SoapClient fail to parse a WSDL on the production server but works on my local server?

Ralat SOAP: Menghuraikan WSDL pada Pelayan Pengeluaran

Apabila cuba menggunakan SoapClient untuk menghuraikan WSDL daripada URL jauh, SOAP- ERROR ditemui pada pelayan pengeluaran. Pelayan WAMP tempatan berjaya mengendalikan operasi, tetapi isu ini berterusan pada pelayan pengeluaran.

Mesej Ralat

Mesej ralat khusus yang diterima ialah:

SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl' : failed to load external entity "http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl"/taxation_customs/vies/checkVatService.wsdl"
Salin selepas log masuk

Penyiasatan

Setelah penyiasatan lanjut, didapati ralat itu berpunca daripada ketidakupayaan SoapClient untuk menghuraikan WSDL semasa cuba memuatkannya daripada URL. Ini berlaku walaupun WSDL boleh diakses melalui panggilan terus menggunakan curl daripada baris arahan.

Penyelesaian

Isu telah diselesaikan dengan menetapkan ejen pengguna secara eksplisit dalam SoapClient menggunakan strim konteks:

$soapClientOptions = array(
    'stream_context' => $context,
    'cache_wsdl' => WSDL_CACHE_NONE
);

$client = new SoapClient($wsdlUrl, $soapClientOptions);
Salin selepas log masuk

Pendekatan ini memastikan bahawa maklumat ejen pengguna HTTP yang diperlukan disertakan dalam permintaan, membolehkan SoapClient berjaya menghuraikan WSDL daripada URL jauh.

Cerapan Tambahan

Analisis lanjut mendedahkan bahawa isu itu juga boleh dikaitkan dengan tetapan khusus pada pelayan pengeluaran. Permintaan HTTP melalui IPv6 dengan rentetan ejen pengguna HTTP yang hilang nampaknya mencetuskan ralat. Dengan memaksa IPv4 atau menyatakan rentetan ejen pengguna secara eksplisit, permintaan itu dapat berjaya tanpa menghadapi ralat SOAP.

Atas ialah kandungan terperinci Mengapa SoapClient saya gagal menghuraikan WSDL pada pelayan pengeluaran tetapi berfungsi pada pelayan tempatan saya?. 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