2012-04-11 131 views
0

任何一個可以請指教如何解析的NuSOAP頭和檢查從下面的SOAP請求的NuSOAP:頭認證服務器端

<SOAP-ENV:Header> 
    <SOAP-ENV:Header xmlns:wsa="http://admin.example.com"> 
     <Username>testuser</Username> 
     <Password>test123456</Password> 
     <Signature>5595610031002</Signature> 
    </SOAP-ENV:Header> 
    </SOAP-ENV:Header> 

username/password/Signature:我需要解析服務器端這頭和驗證每個請求的憑證。

回答

2

我不確定,但我發現了使用下面的代碼跟蹤憑據的替代方法。 讓我解釋一下。

代碼$sSoapRequest = file_get_contents('php://input');返回整個SOAP請求到服務器端...

以下2個功能可以幫助我帶出的值..

function doAuthenticate() 
{ 
    $sSoapRequest = file_get_contents('php://input'); 
    if(isset($sSoapRequest)) 
    { 
     $sUsername = hookTextBetweenTags($sSoapRequest, 'Username'); 
     $sPassword = hookTextBetweenTags($sSoapRequest, 'Password'); 
     $sSignature = hookTextBetweenTags($sSoapRequest, 'Signature'); 
     if($sUsername=='testuser' && $sPassword=='test123456' && $sSignature=='5595610031002') 
      return true; 
     else 
      return false; 
    } 
} 
function hookTextBetweenTags($string, $tagname) { 
    $pattern = "/<$tagname ?.*>(.*)<\/$tagname>/"; 
    preg_match($pattern, $string, $matches); 
    return $matches[1]; 
} 

,並使用doAuthenticate()方法服務器端的每個進程。