2016-02-12 64 views
0

所以我試圖使用由C#.NET應用程序使用PHP生成的WSDL。我遇到過很多問題,並且一直在努力,直到現在我似乎無法找到接下來要做的事情。PHP SoapClient嘗試使用C#生成的WSDL給出錯誤

我正在使用SOAP 1.2來防止發生text/xml錯誤(expected type application/soap+xml),而SOAP 1.2被應用程序接受爲text/xml

我現在收到的錯誤是:

[message:protected] => The SOAP action specified on the message, '', does not match the HTTP SOAP Action, 'http://tempuri.org/IMembership/AcquireSecurityToken'.

我有點擔心,爲什麼它沒有檢測到我的結束('')的任何行動,但我不知道我在做什麼錯或者我應該以不同的方式接近。

在下面你會發現大部分相關代碼都涉及到試圖讓它現在工作。

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


$client = new SoapClient("http://removed.for.now/Membership.svc?wsdl", $params); 
$actionHeader = new SoapHeader('http://www.w3.org/2005/08/addressing','AcquireSecurityToken', 'http://tempuri.org/IMembership/AcquireSecurityToken',true); 
$client->__setSoapHeaders($actionHeader); 

$args = array("username"=>"user", "password"=>"goodpw"); 

try { 
    $result = $client->AcquireSecurityToken($args); 
} catch(Exception $e) { 
    echo "<h1>Last request</h1>"; 
    // print_r the error report. Omitted for clarity. 
} 

任何提示或建議?事情我做得不對,或應該嘗試不同?提前致謝!

回答

0

我在IRC的一些可愛的人的幫助下計算出來的。

我嘗試使用$actionHeader添加的ActionHeader非常接近,但不正確。

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

訣竅。

相關問題