簡體   English   中英

PHP SoapServer:無法解析XML(WSDL文件)-沒有XML文件-URL上帶有“?wsdl”

[英]PHP SoapServer: doesn't resolve XML (WSDL file) - no XML file - with “?wsdl” on URL

我在生產服務器(遠程服務器)上的PHP上實現的Soap Server出現問題。

我已經實現了一個簡單的Soap Server(原生PHP類),並且僅在WSDL模式下起作用。

所以我的代碼看起來像:

ini_set("soap.wsdl_cache_enabled", "0");

$server = new SoapServer("wsSeguimiento.wsdl");

$server->addFunction("ResultadoDetalleExtendido");

$server->handle();

現在,如您所知,當您通過Web瀏覽器以“ http://localhost/soapserver/wsServer.php”之類的URL調用服務器時,您將得到一個空白頁-就我而言-或您在那里編程的任何內容(服務器代碼)。

但是,如果您在“ http://localhost/soapserver/wsServer.php?wsdl”末尾使用“?wsdl”調用相同的URL,則服務器(我猜是句柄函數)會在網絡瀏覽器上解析XML wsdl,因此您將獲得text / xml內容類型,並且可以看到XML定義本身。

現在,它適用於我的開發環境。 沒問題。 我創建了一個Soap客戶端來測試我自己的服務器,並查看它是否返回專家響應,並且一切正常。 但是,當我將代碼上傳到生產服務器時,它不起作用。

Firefox在URL上顯示“?wsdl”調用,典型錯誤是“ XML格式錯誤”,但是在這種特殊情況下,它是從一開始就出現的,就像根本沒有XML文件一樣。 如果我使用客戶端,則會收到錯誤消息:

SOAP錯誤:解析WSDL:無法從'http://.../SOAP_SERVER/seguimientoServer.php?wsdl'加載:預期開始標記,未找到'<'

我已經正確更改了WSDL XML文件中的名稱空間和URL。 因此,它必須正常工作。 但事實並非如此。

我發現基於分塊數據,內容長度,X-by-by等,存在與HTTP標頭本身相關的錯誤。

但我看不到解決方案。

我已經根據以下內容在服務器上做了一些改動(在handle()調用之后):

if( isset($_REQUEST['wsdl']) )
{
    ob_clean();
    echo file_get_contents( "wsSeguimiento.wsdl" );
}

有了它,它真的有效! 但我敢肯定,這不一定是解決問題的方法...

wsdl的開頭似乎有一個無效字符。 也許是空間?

暫無
暫無

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

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