2016-02-12 45 views
0

我需要連接到TeraData SOAP API,該API現在要求使用登錄憑證發送Authorization Basic Header。我不知道如何解決這個問題。我的訪問中加入基本認證頭的時候了SoapUI工作 - 請誰能幫助我獲得連勝代碼:Soap Header with Authorization Basic in native PHP

這裏的頭了SoapUI發送和回覆性好:

POST http://example.com/api/soap/v6 HTTP/1.1 
Accept-Encoding: gzip,deflate 
Content-Type: text/xml;charset=UTF-8 
SOAPAction: "" 
Content-Length: 302 
Host: example.com 
Connection: Keep-Alive 
User-Agent: Apache-HttpClient/4.1.1 (java 1.5) 
Authorization: Basic [user&pass-base64-encoded] 

這是我怎麼了試圖建立我的SoapClient的:

$namespace = "http://ecircle.com/developer/ecmapi"; 
$wsdl = "https://sslh.teradatadmc.com/teradata/api/soap/v6?wsdl"; 
$client = new SoapClient($wsdl, array("trace" => 1, "exceptions" => 0)); 
$login = 'xxx'; 
$password = 'yyy'; 
$header = new SoapHeader($namespace, 'Authorization: Basic', 
base64_encode("$login:$password")); 
$client->__setSoapHeaders($header); 

它不接受,我只是得到一個HTTP/1.1 401未經授權錯誤

堆棧跟蹤顯示我是我發送的標題 - 授權部分在那裏丟失。

public '__last_request_headers' => string 'POST /api/soap/v6 HTTP/1.1 
Host: example.com 
Connection: Keep-Alive 
User-Agent: PHP-SOAP/5.5.12 
Content-Type: text/xml; charset=utf-8 
SOAPAction: "" 
Content-Length: 584 
+0

您需要首先使用'base64_encode($ login:$ password)',然後檢查其他錯誤,因爲您使用的syntaxt不起作用。 –

+0

我按照你的建議 - 但它讓我給 - '(例外)=> null 公共'faultstring'=>字符串'未經授權'(長度= 12) 公共'faultcode'=>字符串'HTTP'(長度= 4 )' - 是否可以使用soap調用發送標準http-headers? – Lupo

回答

-1

那是因爲你應該這樣編碼您的登錄憑證:代替

base64_encode("$login:$password") 

base64_encode($login) . ':' . base64_encode($password)

+0

不 - 我也試過 - 沒有幫助。但是,謝謝。 – Lupo