سؤال

ولقد تم العمل على السيناريو مع PHP4 التي تعتمد على NuSOAP. الآن، أحاول أن نقل هذا إلى PHP5، واستخدام الدعم عمارات للSOAP هناك.

$wsdlPath = "";    // I have obviously set these variables to something meaningful, just hidden for the sake of security
$apiPath = "";
$username = "";
$password = "";

// PHP5 style
$client = new soapclient($wsdlPath, array('login'=>username,                
'password'=> $password,
'soap_version'=> SOAP_1_2,
'location'=> $apiPath,
 'trace'=> 1));

// PHP4/NuSOAP style
$client = new soapclient($wsdlPath, true);  
client->setEndpoint($apiPath);                          
$client->setCredentials($username, $password);
$client ->loadWSD);

ووإصدار PHP5 يلقي تتبع مكدس الذاكرة المؤقتة الاستثناء التالي:

EXCEPTION=SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://external-nbb.napi.norwegian.no.stage.osl.basefarm.net/api/napi1300?wsdl' in /home/eisebfog/public_html/database/norwegian.php:31
Stack trace:
#0 /home/eisebfog/public_html/database/norwegian.php(31): SoapClient->SoapClient('http://external...', Array)
#1 /home/eisebfog/public_html/database/index.php(53): require_once('/home/eisebfog/...')
#2 {main}

والآن، كإصدار NuSOAP لا العمل، وPHP5 النقي لا - لأنها لا تأخذ جراح المخ لمعرفة أنا أفعل شيئا خاطئا. لدي الوصول إلى ملف هتكس، ومن خلال phpinfo () لقد تأكدنا من أن أنا على التوالي NuSOAP بشكل صحيح وتشغيل PHP5 عندما ينبغي، وPHP4 / Nusoap عندما ينبغي.

والأساس، وأنا لست جيدة جدا مع خدمات الويب والصابون - ولكن إذا كان أي شخص لديه أي أفكار، فما استقاموا لكم فاستقيموا نقدر أي مدخلات بشأن ما أفعله خطأ وكيف يمكن الانتقال إلى الصابون الأصلي في PHP5. راجع للشغل، وRESON أريد هذه الخطوة في المقام الأول هو تحقيق وفورات الموارد المفترضة في الصابون الأصلي. فما استقاموا لكم فاستقيموا نقدر أي وصلات إلى المعايير بين هذين الحلين جدا.

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

المحلول

تأكد من NuSoap وPHPv5-SOAP تعمل على نفس الخادم. إذا لم أكن مخطئا تماما، سواء المكتبات تستخدم نفس الدرجة الاسم. ربما أنه سوف يعمل بشكل أفضل إذا تأكد من أي NuSopa ملفات يتم تضمين؟ وتحقق أيضا أن يتم تحميل مكتبة SOAP:

if(!extension_loaded('soap')){
  dl('soap.so'); // Actually a deprecated method. See "notes" at http://no.php.net/dl
}

وأعتقد إصدار الحقل الذي يشير إلى ويعرف باسم "SOAP 1.1" أو مماثلة؟

وأطيب التمنيات:)

راجع للشغل: ماذا تعمل عليها؟ تبادل التأخير من الطيار الى المطار؟ أو ربما لن فيه خدمة ويب يقلل من وقت الانتظار على تسليم الأمتعة في أوسل؟ : p

نصائح أخرى

وكان لدينا مشاكل متشابهة جدا مع PHP5 المدمج في عميل SOAP تحاول تستهلك ويب الخدمات المستندة إلى .NET. كما فشل تحليل اختصار الإبلاغ عن مخطط صالح. وضع تعريفات مخططات في ملف محلي واحد لم يساعد.

ولقد آتينا عن محاولة وتحولت إلى NuSOAP، وهو ما فعلته العمل.

ولكن، NuSOAP أبعد ما يكون عن الكمال أيضا. الحق الآن أن ندخل في الخروج من الوضع الذاكرة أثناء تحليل الاستجابات 1MB +. محو ساعد كل رمز التصحيح سيئة قليلا، ولكن ليس بشكل جذري.

وهكذا، يبدو وكأنه ليس هناك تنفيذ 100٪ العميل قابلة للتشغيل المتبادل / SOAP وظيفية في PHP في الوقت الراهن.

ودون اختباره، ولدي اقتراحين:

أولا، وضع error_reporting الخاص بك إلى أعلى مستوى ممكن (قبل إنشاء SoapClient):

error_reporting( E_ALL );

وإذا كان هناك شيء خاطئ مع المصادقة على جانب الملقم، سوف PHP رمي التحذيرات. في معظم الحالات، وسوف اقول لكم، ما حصل من خطأ.

ثانيا: أنا لا أعرف ما اذا كان يمكنك specifiy الخيار "موقع" جنبا إلى جنب مع URL إلى اختصار. من الناحية النظرية، واختصار يروي العميل الخاص بك، حيث نقطة نهاية العمليات هي، لذلك لم يكن لديك لعناء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top