2012-09-18 40 views
0

我使用PHP連接到Web Service從PHP的SOAP響應頭獲取屬性

我需要通過一些登錄信息連接到Web服務,以便我可以生成一個Ticket以開始使用可用的方法。

下面是一些代碼:

//Connect To WebCrm API 
$client = new SoapClient("http://b2b-email.net/apicrm1/webCRMAPI.asmx?wsdl", array('trace' => 1)); 

//Login 
$ticket = $client->Authenticate(array('code' => 'rhgkhgk','user' =>'myusername','password' =>'apass')); 

從這個響應中的SOAP標頭票證將生成。這在Ticket Header Then GUID下生成。 (見下文)

<?xml version="1.0" encoding="utf-8"?> 
    <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
     <soap:Header> 
     <TicketHeader xmlns="http://www.webcrm.com/"> 
      <Guid>TICKET->>>>>>>>e446373e-8fg0-4dfc-b876-41f3bc8990dd</Guid> 
     </TicketHeader> 
     </soap:Header> 
     <soap:Body> 
     <AuthenticateResponse xmlns="http://www.webcrm.com/"> 
      <AuthenticateResult> 
     <Message /> 
     <Code>0</Code> 
     </AuthenticateResult> 
    </AuthenticateResponse> 
    </soap:Body> 
</soap:Envelope> 

我需要這個票ID使用Web服務來執行任何其他任務,但如何可以訪問它和我的代碼中使用它?

我曾嘗試使用以下嘗試:

$response = $client->__getLastResponse(); 

但是這個輸出象下面這樣:

6d5933d3-46ff-4690-893d-2af04806668c->>>>>>>>0<<<<<ZERO ON THE END 

零總是在結尾時,它不應該是什麼?

任何幫助,爲什麼這是發生在我可以實現從肥皂頭訪問票的最佳途徑是非常感謝!

回答

0

作爲每manual

$soapclient->__soapCall("soapmethod", array(parameters), null, $input_headers, &$output_headers); 

$ output_headers然後應含有從響應消息的標頭。

$client->__getLastResponse()返回最後一個響應的XML。您正在瀏覽器中查看此內容,並且您的瀏覽器正試圖將其解釋爲HTML。因此,它不會顯示任何XML標籤並僅顯示文本。這就是顯示0的原因。您可以通過多種方式查看整個XML:

  • 查看PHP頁面
  • 包裹echo聲明<xmp></xmp>標籤的來源。
  • 在回調XML之前,先調用htmlentities()
+0

好的我嘗試了這個SOAP調用,但是我剛剛得到這個錯誤** PHP致命錯誤:Uncaught SoapFault異常:[客戶端]看起來像我們在**中沒有XML文檔這是由'$ client - > __ soapCall(「Authenticate」,array(「gddfffdg」,「dfgdfgd」,「dggfdf」),null,$ input_headers,&$ output_headers);' – user1680567