簡體   English   中英

在Jenkins中獲取並評估卷曲響應

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM