簡體   English   中英

從NuSOAP遷移到PHP5 SOAP

[英]Moving from NuSOAP to PHP5 SOAP

我一直在使用PHP4的腳本,它依賴於NuSOAP。 現在,我正在嘗試將其移至PHP5,並在那里使用對SOAP的buildin支持。

$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沒有 - 它不需要腦外科醫生弄清楚我做錯了什么。 我可以訪問.htaccess文件,並通過phpinfo()確保我正確地運行NuSOAP並在應該運行PHP5時運行PHP5和我應該運行的PHP4 / Nusoap。

基本上,我對網絡服務和肥皂並不是很好 - 但是如果有人有任何想法,我會很感激我對錯誤以​​及如何在PHP5中使用本地肥皂的任何意見。 順便說一下,我首先想要這一舉動的共鳴是假定的本地肥皂資源節約。 我也很欣賞這兩個解決方案之間的基准測試鏈接。

確保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

沒有測試,我有兩個建議:

首先,將error_reporting置於盡可能高的值(在創建SoapClient之前):

error_reporting( E_ALL );

如果服務器端的身份驗證出現問題,PHP將發出警告。 在大多數情況下,它會告訴你,出了什么問題。

第二:我不知道你是否可以指定'location'選項和wsdl的URL。 從理論上講,wsdl會告訴您的客戶端操作的端點在哪里,因此您不必費心。

我們遇到了與PHP5內置SOAP客戶端試圖使用基於.NET的Web服務非常相似的問題。 WSDL解析也無法報告無效架構。 將模式定義放入單個本地文件中沒有幫助。

我們放棄了嘗試並切換到NuSOAP,它確實起作用了。

然而,NuSOAP也遠非完美。 現在,在解析1MB +響應期間,我遇到了內存不足的情況。 擦除所有討厭的調試代碼有點幫助,但不是根本。

因此,看起來目前在PHP中沒有100%可互操作/功能的SOAP客戶端實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM