2015-11-13 44 views
0

我一直在嘗試使用PHP SoapClient來首次使用WCF API,但到目前爲止沒有鎖定。使用PHP SoapClient來使用WCF API

WSDL is copied here

的開始,我需要檢索從LOGIN功能的令牌,並調用等功能時使用此令牌。登錄細節:

  • 用戶名: '常規'
  • Passord: ''(空,不爲空)

到目前爲止,我已經嘗試過多種組合,通常是這樣的:

<?php 

ini_set('soap.wsdl_cache_enabled',0); 
ini_set('soap.wsdl_cache_ttl',0); 

$params = array(
    "soap_version" => SOAP_1_2, 
    "trace" => 1, 
    "exceptions" => 0, 
); 

$client = new SoapClient('http://bibjure.rwaao.no:8001/Jussystemer/BibjureService?singleWsdl', $params); 

$retval = $client->Login('regular',''); 

if (is_soap_fault($retval)) { 
    trigger_error("SOAP Fault: (faultcode: {$retval->faultcode}, faultstring: {$retval->faultstring})", E_USER_ERROR); 
} 

var_dump($retval); 

這將導致以下錯誤: PHP Fatal error: SOAP Fault: (faultcode: s:Sender, faultstring: The creator of this fault did not specify a Reason.) in /mnt/data/fredrik/wcf-test.php on line 17

我不知道如何解決這個錯誤。我希望有人可能會看到我的代碼中的錯誤。

非常感謝。

回答

0

添加肥皂頭,並嘗試這樣的事情。它可能工作

 $client = new SoapClient('http://bibjure.rwaao.no:8001/Jussystemer/BibjureService?singleWsdl', $params); 

     $actionHeader = new SoapHeader('http://www.w3.org/2005/08/addressing','Action','http://tempuri.org/IService/GetData',true); 
     $client->__setSoapHeaders($actionHeader); 

     $retval = $client->Login('regular',''); 
+0

同樣的錯誤仍然存​​在。我猜測SoapHeader中的參數需要修改。不幸的是,我不知道是什麼。 – frigg

+0

@frigg是的,你必須修改標題中的參數。以此爲例。 $'auth = array( 'UserName'=>'USERNAME', 'Password'=>'PASSWORD', 'SystemId'=> array('_'=>'DATA','Param'=>'PARAM' ), ); $ header = new SoapHeader('NAMESPACE','Auth',$ auth,false); $ client - > __ setSoapHeaders($ header); –