[英]Get and evaluate curl response in Jenkins
我正在Jenkins中嘗試獲取帶有curl的Http帖子的響應,我有以下腳本:
curl -X POST -k -H "Accept: application/json" -H "Content-Type: application/json" --data-binary "@/var/lib/jenkins/workspace/Folder/sessions.json"
http: //mypage/Data/file.php
如您所見,我正在向file.php發送一個json文件 ,然后調用一些函數並返回特定結果。
使用該腳本,我得到了想要的結果,但是我想評估該結果,比如說結果是“ OK”,然后我想將結果分配給變量,然后說是否$ result ==單擊“確定”,然后執行其他操作。 我該怎么做,我已經嘗試過類似的方法:
if $response == "true" then exit 1 fi
但這似乎無法解決,有人知道如何做到嗎?
他們將其標記為與此問題類似的PHP cURL,提取XML響應 ,但我不知道如何,因為我不是在談論php代碼,bash代碼,而是要將curl結果存儲在變量中... 。
提前致謝!!!
如果僅需要檢查請求是否成功,則可以檢查狀態代碼:
status=$(curl --write-out '%{http_code}' \
-s -o /dev/null \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
--data-binary "@/var/lib/jenkins/workspace/Folder/sessions.json" \
"http://mypage/Data/file.php")
if [ "$status" == "200" ]; then
echo "request was successful"
else
echo "error status : $status"
fi
與:
--write-out '%{http_code}'
:輸出狀態碼 -o /dev/null
:不輸出主體 -s
:不顯示連接日志 如已指定Accept: application/json
,您期望以JSON格式進行響應,因此您可以使用jq
JSON解析器對其進行解析:
如果響應為:
{ "status": true }
那么您可以執行以下操作:
status=$(curl -s -H "Accept: application/json" \
-H "Content-Type: application/json" \
--data-binary "@/var/lib/jenkins/workspace/Folder/sessions.json" \
"http://mypage/Data/file.php" | jq -r '.status')
if [ "$status" == "true" ]; then
echo "request was successful"
else
echo "error status : $status"
fi
如果響應不是JSON格式並且響應是OK
:
status=$(curl -s -H "Content-Type: application/json" \
--data-binary "@/var/lib/jenkins/workspace/Folder/sessions.json" \
"http://mypage/Data/file.php")
if [ "$status" == "OK" ]; then
echo "request was successful"
else
echo "error status : $status"
fi
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.