【问题标题】:Fail to pass data in Curl POST command [duplicate]无法在 Curl POST 命令中传递数据 [重复]
【发布时间】:2020-07-10 10:51:47
【问题描述】:

Curl POST 命令传递数据失败。

代码

printf "\nGet given User details :\n"
curl -s -b ${COOKIE_FILE} -c ${COOKIE_FILE} 'https://api.xxxx.xxxx.com/sso/user?email='${USER_EMAIL} |python -m json.tool > output.txt
user_id=$(cat output.txt | grep -w "id" | awk -F ':' {'print $2'} | sed -e 's|[," ]||g');
echo "User ID for given add User: $user_id"

printf "\nGet given Role/Group details :\n"
curl -s -b ${COOKIE_FILE} -c ${COOKIE_FILE} 'https://api.xxxx.xxxx.com/role?name='${ROLE_NAME} | python -m json.tool > output_roles.txt
role_id=$(cat output_roles.txt | grep -w "id" | awk -F ':' {'print $2'} | sed -e 's|[," ]||g');

printf "\nAdding User to given Group :\n"
curl -s -b ${COOKIE_FILE} -c ${COOKIE_FILE} -X POST -data '{"role_users":"$role_id","user_roles":"$user_id"}' 'https://api.xxx.xxxx.com/rolesusers'

Curl POST 命令对我不起作用。它没有给我任何错误,我在应用程序上也没有看到任何变化。

当我传递硬编码值时,Curl 命令正在工作。

curl -s -b ${COOKIE_FILE} -c ${COOKIE_FILE} -X POST -H "Accept: Application/json" -H "Content-Type: application/json" --data '{"role_users":22, "user_roles":99}' 'https://api.xxx.xxxx.com/rolesusers'

【问题讨论】:

    标签: linux bash curl post sh


    【解决方案1】:

    知道了 - 通过添加 '

    curl -s -b ${COOKIE_FILE} -c ${COOKIE_FILE} -X POST -H "Accept: Application/json" -H "Content-Type: application/json" --data '{"role_users":"'$role_id'", "user_roles":"'$user_id'"}' 'https://api.xxx.xxxx.com/rolesusers' > output_add.txt
    

    【讨论】:

    • 这会将变量留在未引用的部分中,这可能会导致麻烦。最好在它周围添加双引号,例如:'..."user_roles":"'"$user_id"'"}' ...。是的,这令人困惑;您正在混合多种类型和级别的引号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 2014-08-24
    • 1970-01-01
    • 2019-08-27
    • 2019-10-31
    • 2020-05-22
    • 1970-01-01
    相关资源
    最近更新 更多