الحل البديل لPHP SOAP فشل الطلب عندما يعرف اختصار منفذ خدمة ملزمة كما https و المنفذ 80؟

StackOverflow https://stackoverflow.com/questions/1439615

سؤال

وأنا تستهلك خدمة ويب SOAP باستخدام تمديد الصابون PHP5 و. تم إنشاء "اختصار الخدمة باستخدام محور java2wsdl، ومهما كانت خيارات يتم استخدامها أثناء نتيجة جيل في رابط ملزمة المنفذ يتم على النحو الوارد على الشبكي : في //xxx.xxx.xxx.xxx**: 80 **

إذا كنت تحميل اختصار لخدمة بلدي، وإزالة مواصفات المنفذ 80 من ميناء ملزمة قيمة الموقع، والرجوع إلى ملف محلي في بلدي soapclient نسميها يعمل بشكل جيد.

ولكن، إذا حاولت الرجوع عن بعد (أو تحميل البرنامج والرجوع إليه محليا، كما هو) فشل استدعاء مع خطأ الصابون.

وليس لدي أي مساهمة في الجانب الخدمي لذلك لا يمكن أن تجعل منهم تغيير عملية توليد اختصار الخاصة بهم. لذلك، ما لم تكن هناك وسيلة لجعل soapclient جاهل من الميناء، وأنا عالقة مع استخدام نسخة معدلة محليا من شخص اختصار آخر '(التي تفضل عدم القيام به).

وأية أفكار حول كيفية جعل بلدي soapclient تجاهل المنفذ 80؟

هل كانت مفيدة؟

المحلول

وقد ترغب في محاولة تجاوز اسم المضيف / المنفذ باستخدام مجموعة خيارات $ أنك يمكن أن تمر كما الوسيطة الثانية إلى منشئ SoapClient في:

و$client = new SoapClient("some.wsdl", array('proxy_host' => "https://example.org", 'proxy_port' => 443);

نصائح أخرى

إذا لم تتمكن من العثور على حل أكثر أناقة، يمكنك دائما تحميل الملف، لا بدائل سلسلة، ثم استخدام ذلك في WSDL.

$cached_wsdl_file = './cached_wsdl.xml';
if (filemtime($cached_wsdl_file) > time() - 3600) {
    $wsdl = file_get_contents('http://server/service?wsdl');
    $wsdl = str_replace('server:80', 'server', $wsdl);
    file_put_contents($cached_wsdl_file, $wsdl);
}
$client = new SoapClient($cached_wsdl_file);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top