PHP5 SOAP NuSOAP hareket

3 Cevap php

Ben NuSOAP dayanan PHP4 ile bir senaryo üzerinde çalışıyoruz. Şimdi, PHP5 bu hareket, ve orada SOAP için buildin desteği kullanmaya çalışıyorum.

$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 sürümü aşağıdaki özel durum stacktrace atıyor:

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}

Şimdi, NuSOAP sürüm çalışır, ve saf PHP5 değil gibi - ben yanlış bir şey yapıyorum anlamaya bir beyin cerrahı almaz. Ben. Htaccess dosyasına erişimi ve phpinfo yoluyla () Ben düzgün NuSOAP çalışan ve zaman gerektiği PHP5 koşuyorum emin yaptı ve PHP4/Nusoap zaman gerektiği oylandı.

Temelde, web hizmetleri ve sabunla çok iyi değilim - ama herkes herhangi bir fikir varsa, ben yanlış yapıyorum üzerinde herhangi bir giriş takdir ediyorum ve nasıl PHP5'ta yerli sabun taşıyabilirsiniz. Btw, ben ilk etapta bu hamleyi istediğiniz Reson yerli sabun varsayılır kaynak tasarrufu olduğunu. Ben de bu iki çözelti arasındaki kriterler için herhangi bir bağlantıları takdir ediyorum.

3 Cevap

Emin NuSOAP ve PHPv5 soap aynı sunucuda çalıştığından emin olun. Tamamen yanlış değilim, hem kütüphaneler aynı sınıf adını kullanır. Emin hiçbiri NuSopa dosyaları dahil olmak belki daha iyi çalışır? Ve ayrıca SOAP-kütüphane yüklü olduğundan emin olunuz:

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

Ben bahsettiğiniz versiyonu alan "SOAP 1.1" ya benzer olarak tanımlanır sanırım?

En iyi dileklerimle :)

Btw: what are you working on? Exchange of delays from the pilot to the airport? Or perhaps a webservice which will decrease the waiting-time on luggage delivery at Osl? :p

Test olmadan, iki öneri var:

Birincisi, (SoapClient oluşturmadan önce) mümkün olan en yüksek için error_reporting koymak:

error_reporting( E_ALL );

Sunucu tarafında kimlik ile yanlış bir şey varsa, PHP uyarıları atmak olacaktır. Pek çok durumda, bu ne yanlış gitti, size söyleyecektir.

İkincisi: Bir wsdl bir URL ile birlikte 'konum' seçeneğini specifiy eğer ben bilmiyorum. Teorik olarak, wsdl operasyonların son nokta, müşteri, söyler, bu yüzden uğraşmak zorunda değilsiniz.

Biz yerleşik SOAP istemci PHP5 bir. NET tabanlı Web hizmeti tüketmek için çalışıyor ile çok benzer sorunlar vardı. Ayrıca WSDL ayrıştırma geçersiz şema raporlama başarısız oldu. Tek bir yerel dosyaya şema tanımlarını koyarak yardım etmedi.

Biz çalışıyoruz vazgeçti ve iş yaptım NuSOAP, geçti.

Ancak, NuSOAP uzak da mükemmel değil. Şu anda ben 1MB + yanıtların çözümlenmesi sırasında out-of bellek durumuna girmektedirler. Tüm kötü ayıklama kodu silme biraz yardımcı oldu ama radikal.

Şu anda PHP hiçbir% 100 çalışabilir / fonksiyonel SOAP istemci uygulaması var gibi Böylece görünüyor.