这有效:
curl --url http://someurl.tld --form "apikey=39485730"
这不是:
curl --url http://someurl.tld --form "apikey=<keyfile"
错误:
API密钥无效
cURL手册(http://curl.haxx.se/docs/manpage.html)明确说明
-F / - form(HTTP)这使curl模拟用户按下提交按钮的填写表单。 [...]要强制'content'部分为文件,请在文件名前加上@符号。要从文件中获取内容部分,请在文件名前加上符号&lt;前缀。 @和&lt;之间的区别然后,@使文件作为文件上传附加在帖子中,而&lt;创建一个文本字段,然后从文件中获取该文本字段的内容。
FWIW:
如果我使用--form“apikey = @ keyfile”我收到错误:“需要API密钥”。
这证实了@肯定是错的(我没问题)。
但是为什么<
不起作用,怎么办呢?
看起来好像文件内容没有传递或错误。因此,我已经四倍确定,只有api键(此处:39485730),文件中没有其他内容。
如果重要的是我为什么要这样做:
我在脚本中需要这个curl-command,并且不想把API密钥放在那里。相反,它应该在运行此脚本的用户的HOME中,只能由他读取,而不是其他任何人。
提前感谢您的任何见解......: - )
答案 0 :(得分:2)
我认为你可能在keyfile
中有一个尾随换行符。您可以通过以下方式查看:
xxd keyfile
最后应该没有0a
。如果有,您可以重新创建密钥文件而不使用如下所示的尾随换行符:
echo -n 39485730 > keyfile
然后使用新的keyfile
再次尝试。