2017-06-13 109 views
1

有沒有人使用過PHP的HP ALM API?將cookie和會話ID發送到HP ALM API

我正在從qcbin/API /認證餅乾/登入API

但是,當我試圖這些cookie發送到其他後續的API,它返回我httpcode 401未通過身份驗證。

此外,我正在使用qcbin /身份驗證點/身份驗證API和qcbin/api /站點會話API來獲取和維護會話。

我的代碼如下:

$ URL = 「https://myhost/qcbin/api/authentication/sign-in」; $ credentials = $ user。 ':'。 $密碼; $ headers = array(「GET /HTTP/1.1","Authorization:Basic」。base64_encode($ credentials));

curl_setopt($qc, CURLOPT_URL, $url); 
curl_setopt($qc, CURLOPT_HTTPGET,1); 
curl_setopt($qc, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($qc, CURLOPT_COOKIEJAR, $ckfile); 
curl_setopt($qc, CURLOPT_RETURNTRANSFER, true); 
$result = curl_exec($qc); 
$response = curl_getinfo($qc); 

然後我試圖得到測試集文件夾:

$ FOLDER_NAME = 「文件夾名」; $ safe_name = rawurlencode($ folder_name); $ url =「https://myhost/qcbin/rest/domains/NETWORKS_QUALITY/projects/NETWORKS/test-set-folders?query= {name ['」。 $ safe_name。 「']}」;

$qc = curl_init(); 
curl_setopt($qc, CURLOPT_URL, $url); 

//curl_setopt($qc, CURLOPT_HTTPHEADER, $headers); 

curl_setopt($qc, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($qc, CURLOPT_COOKIESESSION, TRUE); 
curl_setopt($qc, CURLOPT_COOKIE,$ckfile); 
curl_setopt($qc, CURLOPT_COOKIEFILE, $ckfile); 


curl_setopt($qc, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($qc, CURLOPT_VERBOSE, true);  

$result = curl_exec($qc); 
$response = curl_getinfo($qc); 

this response returns me httpcode 401 instead of 200. Please help me if anybody worked on this before. 

謝謝 Biswajit耶拿

回答

0

試圖理解你的查詢....你得到從認證回200次成功?

我使用的是由python模塊調用的「requests」的REST-API。 如果你看看REST API庫,你應該在頭部發回cookie :-)在自動化中,你應該每次看到頭部(cookie)並用它來回復它。

某些版本的QC ALM中的/HTTP/1.1甚至不需要。另外,在頭文件中,您必須指定其他參數,如發送xml或json文件格式等。

Content-Type":"application/xml", 
"KeepAlive":"true", 
"Authorization":"Basic ", 
"QCSession" : None, 
"Cookie": None 

請看看在QC ALM庫,但我希望我已經用PHP我不能幫太多了你的觀點:-)可惜,但我看不到向服務器發送一個適當的標題。

+0

謝謝馬可。是的,我從認證API獲得200。根據您的評論,我需要在標頭中發送cookie。我試圖發送cookie中的cookie也沒有奏效。 – Biswajit

+0

在python中,我的請求看起來像:mySession.get(url,data = xml_data,header = my_header)。大概我猜你的情況你應該檢查如何通過使用curl動作來發送標題。 –

+0

在身份驗證過程中,因爲這是第一封沒有使用任何重要標頭的消息;)則必須使用LSSO-Cookie。 –

0

是的,我得到了解決方案。 只有傳遞給任何CURL調用所需的CURL選項。

所以我只提出以下選項,它將http_code作爲200和數據返回給我。無需編寫不必要的CURL選項。

curl_setopt($qc, CURLOPT_URL, $url); 
curl_setopt($qc, CURLOPT_COOKIEFILE, $ckfile); 
curl_setopt($qc, CURLOPT_RETURNTRANSFER, true); 

謝謝

+0

確實非常好:-)然後你總是使用cookie選項進入下一個查詢等等!祝你有美好的一天,並請關閉這個問題;) –