我試圖使用PHP和SOAP使用Web服務。 Web服務使用.NET構建,並託管在ASP服務器上。我正在使用以下代碼與API進行交互,但我一直在解析WSDL時遇到錯誤。 PHP UNIX服務器有一個SSL證書,Web服務主機也有一個SSL證書,我使用https來啓動事務。通過PHP消費的ASP服務器上的SOAP Web服務
這種特殊的API調用請求字符串一個會員號:
$wsdl=' https://domain.com/ws.asmx?wsdl ';
$client=new SOAPClient($wsdl, array('exceptions'=>0));
$result=$client->IsMemberCurrent('123456789');
錯誤:
Fatal error: SOAP-ERROR: Parsing WSDL: Couldn't load from 'domain/ws.asmx?wsdl' : Start tag expected, '<' not found in index.php on line 4
我可以看到WSDL內容,但我收到錯誤消息通過PHP表明它無法看到或無法處理WSDL文件?
SOAP 1.2 service description:POST /SubscriberAPI.asmx HTTP/1.1
Host: subdomain.domain.com
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<IsMemberCurrent xmlns="http://www.domain.com/">
<MembershipNo>string</MembershipNo>
</IsMemberCurrent>
</soap12:Body>
</soap12:Envelope>
感謝您的提示。我按照建議完成了,但是我得到的回報是相同的 - 無法加載錯誤。這是否意味着防火牆問題,因爲當我嘗試直接從Web瀏覽器訪問WSDL文件時,我能夠看到WSDL文件? – chocolatecoco 2010-07-07 13:11:17
如果它在file_get_contents上出現錯誤,那麼它是連接到IIS框的問題,而不是IIS或ASP.NET的問題。 這可能是一個防火牆問題 - 但需要更多的信息。 除了無法加載以外,還能獲得更多信息嗎? 您正在使用的Web瀏覽器位於UNIX服務器上嗎? 你可以嘗試通過HTTP而不是https? – 2010-07-07 13:19:58
我的web服務器使用PHP/UNIX,我試過HTTP和HTTPS,但是我得到的錯誤是它無法解析WSDL文件。您在我的原始文章中看到的錯誤消息是PHP顯示的所有信息,除非有可用於提取更多信息的調試方法? – chocolatecoco 2010-07-07 13:23:15