【发布时间】:2017-08-07 16:22:26
【问题描述】:
以下 curl 命令可从命令行运行。我得到了服务器的有效响应。
curl -X POST https://somebaseurl/api/v1/auth/login -H "Content-Type:application/json" -d '{"email": "foo@bar,com", "password": "foo"}'
但是我正在尝试编写这样的 BASH 脚本
baseUrl=https://somebaseurl
contentTypeJson="\"Content-Type:application/json\""
credentials="'{\"email\": \"foo@bar.com",\"password\": \"foo\"}'"
login="curl -X POST $baseUrl/api/v1/auth/login -H $contentTypeJson -d $credentials"
echo ${login}
response=`${login}`
echo ${response}
我从服务器收到错误的请求响应。但是,如果我将回显的 curl 命令直接复制到我的终端中,它就可以工作。我做错了什么?
编辑:
根据要求,我得到 错误请求请求'POST api/v1/auth/login' [预期的应用程序/json]
【问题讨论】:
-
“我收到了错误的请求响应”您得到的响应是什么?请编辑您的问题以包含错误
-
@sircapsalot 完成,谢谢
-
在“登录”中,将
-v选项添加到 curl 命令以启用详细输出。也许您的命令没有按预期进行插值 -
您不应该将直引号放在双引号内,然后尝试将其用作引用此类论点的一种方式。使用 \"$credentials\" 并删除赋值语句中的单引号。内容类型也是如此。 (这个修复是否解决了问题,我猜不出来,但它让代码变得混乱。)