0

これは機能します:

 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 は、ユーザーが送信ボタンを押した入力フォームをエミュレートできます。[...] 「コンテンツ」部分を強制的にファイルにするには、ファイル名の前に @ 記号を付けます。ファイルからコンテンツ部分だけを取得するには、ファイル名の前に記号 < を付けます。@ と < の違いは、@ はファイルのアップロードとして投稿にファイルを添付するのに対し、< はテキスト フィールドを作成し、そのテキスト フィールドのコンテンツをファイルから取得することです。


FWIW: --form "apikey=@keyfile" を使用すると、「API キーが必要です」というエラーが表示されます。これにより、@ が間違いなく間違っていることが確認されます (これは問題ありません)。しかし、なぜうまくいか<ないのでしょうか。

ファイルの内容が伝えられていないか、間違っているように見えます。したがって、ファイルには API キー (ここでは 39485730) のみが含まれ、他には何も含まれていないことを 4 重に確認しました。


なぜ私がこれをやろうとしているのかが重要な場合:
スクリプトでこのcurlコマンドが必要であり、そこにAPIキーを入れたくありません. 代わりに、このスクリプトを実行するユーザーの HOME にある必要があり、そのユーザーのみが読み取ることができ、他のユーザーは読み取ることができません。

事前に洞察をありがとう... :-)

4

1 に答える 1

2

の末尾に改行がある可能性があると思いますkeyfile。これは次の方法で確認できます。

xxd keyfile

0a最後に何もないはずです。存在する場合は、次のように末尾の改行なしでキーファイルを再作成できます。

echo -n 39485730 > keyfile

新しい で再試行してくださいkeyfile

于 2010-01-18T22:10:38.020 に答える