簡體   English   中英

NuSOAP PHP Web服務

[英]NuSOAP PHP Web Service

我正在使用NuSOAP嘗試使用Java構建的Web服務。 到目前為止我有這個代碼:

<?php
require_once('lib/nusoap.php'); 
$wsdl="http://localhost:8080/HelloWorldWS/sayHiService?WSDL";
$client=new nusoap_client($wsdl, 'wsdl');
$param='John';#array('name'=>'John'); 
echo $client->call('Hey', $param);
unset($client);
?>

但是當網頁加載時,我得到一個空白頁面甚至沒有代碼,我真的不知道為什么。 難道我做錯了什么?

雖然NuSOAP是一個非常常見的PHP SOAP庫,但我認為它主要用於PHP4應用程序。 因為PHP5有一個更快的內置SOAP擴展(因為它是一個編譯的擴展)。 我還建議使用Zend Framework SOAP庫。 但我記得我想使用一些Web服務(不是由我編寫,用Java實現),而且這些SOAP客戶端都不起作用,但是NuSOAP。 而我真的無法弄清楚為什么。

無論如何,這是我當時使用該Web服務所做的事情:

$soapClient = new nusoap_client($wsdlFile, 'wsdl', '', '', '', '');
$soapClient->soap_defencoding = 'UTF-8';
$soapClient->debug_flag = false;
$soapError = $soapClient->getError();
if (! empty($soapError)) {
    $errorMessage = 'Nusoap object creation failed: ' . $soapError;
    throw new Exception($errorMessage);
}
// calling verifyT method, using 2 parameters.
$tResult = $soapClient->call( 'verifyT', array($param1, $param2) );
$soapError = $soapClient->getError();
if (! empty($soapError)) {
    $errorMessage = 'SOAP method invocation (verifyT) failed: ' . $soapError;
    throw new Exception($errorMessage);
}
if ($soapClient->fault) {
    $fault = "{$soapClient->faultcode}: {$soapClient->faultdetail} ";
    // handle fault situation
}

不要使用NuSoap。 從版本5開始,PHP有一個本機soap客戶端

在PHP5上繼續使用NuSOAP有一些很好的理由:

  • 獲取頁面時,NuSOAP會生成方法列表
  • NuSOAP“動態”生成WSDL,這是PHP 5中本機實現SOAP無法提供的非常有用的功能

不要使用NuSoap。 從版本5開始,PHP有一個本機soap客戶端 ,除了速度更快之外,它更加穩定。

..當網頁加載時,我得到一個空白頁面沒有...

這可能是一個致命的錯誤。 嘗試檢查錯誤日志以查看出錯的地方。 或者設置display_errors = on

是的,你做錯了什么。 很難知道什么是基於空白頁面,但我從這一行開始,它看起來不像有效的PHP:

$ PARAM = '約翰';#陣列( '姓名'=> '約翰');

“#”沒有在PHP中發表評論; “//”的確如此

如果修復仍會導致空白頁面,請打開錯誤報告和/或添加更多輸出,以查看確切發生的情況。

我剛遇到同樣的問題。

使用include_once而不是require_once解決了空白頁問題。 當然,這不是完美的解決方案,因為: require,include和require_once之間的區別?

請在瀏覽器中驗證服務器生成的HTML。 在我的例子中,結果包含XML標記,因此瀏覽器無法正確顯示信息。

暫無
暫無

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

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