2012-03-14 78 views
0

我正在使用PHP與SOAP webservice進行通信,我遇到了麻煩。php「所有驗證都必須通過SSL完成」,使用SOAP

// Create SOAP client object 
$objClient = new SoapClient("https://panopto_host/Panopto/PublicAPI/4.0/Auth.svc?wsdl", array('trace' => true)); 

// These parameters satisfy this specific remote call. 
$loginParams = array('userKey' => 'cmjw', 'password' => 'bleh'); 

$objLogin = $objClient->LogOnWithPassword($loginParams); 

我得到的錯誤是「所有認證必須通過SSL完成」。我不知道這是一個服務器應用程序錯誤消息還是一個標準的SOAP錯誤,但奇怪的是我在.Net中創建了非常簡單的程序,創建了一個服務引用來生成代理類,並且它工作正常。

我缺少什麼PHP使方法調用使用SSL?

感謝您的任何建議。 科裏。

回答

0

如果WSDL中的服務URL是http URL,那麼即使通過https下載WSDL,該請求也可能通過http進行。你能分享WSDL內容嗎?

+0

https://dlri.hosted.panopto.com/Panopto/PublicAPI/4.0/Auth.svc?wsdl [link](https://dlri.hosted.panopto.com/Panopto/PublicAPI/4.0/Auth。 svc?wsdl) – cardinalPilot 2012-03-14 18:26:03

+0

我認爲'操作''LogOnWithPassword'元素指向http URL'http:// tempuri.org/IAuth/LogOnWithPassword'而不是https – 2012-03-14 18:29:22

+1

好點。遵循這一思路,我查看了服務soap:地址位置,它有http,這是不對的。當我下載WSDL時,將其更改爲https,引用它,它現在似乎工作。感謝您的正確方向。 .Net工作,因爲它在服務參考中有https。 – cardinalPilot 2012-03-14 18:38:12