2017-06-20 51 views
0
捲曲響應

我試圖讓一個HTTP POST的與詹金斯捲曲的反應,我有以下腳本:獲取和評估詹金斯

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 a json文件,然後我調用一些函數並返回一個特定的結果。

通過該腳本,我得到了我想要的結果,但我想評估一下結果,比如說結果是「OK」,然後我想將結果賦值給一個變量,然後說如果$結果==「確定」,然後這樣做否則做到這一點。我怎麼能這樣做,我試過這樣的事情:

if $response == "true" then exit 1 fi 

但它似乎沒有工作,有沒有人知道它是如何做到的?

他們將其標記爲與此類似問題 PHP cURL, extract an XML response ,但我不明白怎麼回事,因爲我不是在談論的PHP代碼,慶典代碼,我想捲曲結果存儲在一個變量... 。

在此先感謝!

+0

用四個空格前綴代碼/數據。請看[編輯幫助](http://stackoverflow.com/editing-help)。 – Cyrus

回答

0

您可以檢查狀態代碼,如果你只需要檢查,如果該請求是成功的:

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:沒有按」 t輸出機體
  • -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 
+0

正是我在找的東西!謝謝!! – popquinto