【问题标题】:Get and evaluate curl response in Jenkins在 Jenkins 中获取和评估 curl 响应
【发布时间】:2017-06-20 19:58:03
【问题描述】:

我试图在 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”,然后我想将结果分配给一个变量,然后说 if $result=="OK" then 这样做else 那样做。我该怎么做,我尝试过这样的事情:

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

但是好像不行,有谁知道怎么弄的吗?

他们将其标记为类似于此问题 PHP cURL, extract an XML response ,但是我不明白怎么做,因为我不是在谈论php代码,bash代码,我想将curl结果存储在一个变量中......

提前致谢!!!

【问题讨论】:

    标签: php json bash curl jenkins


    【解决方案1】:

    如果只需要查看请求是否成功,可以查看状态码:

    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
    

    【讨论】:

    • 正是我想要的!谢谢!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 2019-09-30
    • 2015-05-21
    • 2020-12-13
    相关资源
    最近更新 更多