【问题标题】:Feeding a local file as parameter for data input for a CURL request提供本地文件作为 CURL 请求的数据输入参数
【发布时间】:2017-06-28 10:56:41
【问题描述】:

我是新手,对直接从控制台做事感到非常兴奋! :)

今天我正在使用meaningcloud API 进行词形还原等,当我将文本作为txt=here%20my%20text 之类的参数直接输入到URL 中时效果很好。

但是,当尝试使用 doc= 参数(如 in their docs 所述)从文件提供输入时,我不断收到以下响应:

{"status":{"code":"200","msg":"Missing required parameter(s) - [txt]", ...

文档读到我可以使用doc、url 或txt 作为参数来指定文本输入的来源,但似乎我在这里做错了。

我尝试了一段时间使用不同版本的绝对路径和相对路径,但不知道如何让它直接从文件中获取输入。

这是我正在进行的一个示例调用,也许有人可以指出我的错误(在实际调用中,我有我的 API 密钥而不是 {my_key_here}!):

curl -K -XPOST "https://api.meaningcloud.com/parser-2.0?key={my_key_here}&of=json&lang=es&doc=Users/Martin/Documents/text.txt" >> output.json

我尝试了更一般的答案here,但得到了相同的错误响应。我想知道这是否是我的一般错误,或者它是否特定于 API。

感谢您的任何提示!

【问题讨论】:

  • -K 选项在那里是完全错误的,因为它会将-XPOST 视为要读取的文件名...您可能是指小写-k。
  • 哦!非常感谢。是的,我没有检查就复制了这个! ???现在在这里阅读它:curl.haxx.se/docs/manpage.html,根本不需要这个。
  • 它仍然无法正常工作,所以那里肯定有其他问题。
  • 嗯,当然,你不能随心所欲。您已经为自己写了一个答案,显示了一个有效的 POST,因此可能一个普通的 GET 不适用于该 API。

标签: curl command-line terminal


【解决方案1】:

我得到了它与@Lucas Liu 在this thread 中的回答一起使用!

curl  -i  -F doc=@text.txt "https://etc."

@Daniel Stenberg 的轻推帮助我也找出了我最初的错误(来自curl manual):

@文件名

这将使 curl 从给定文件中加载数据(包括任何 换行符),对该数据进行 URL 编码并在 POST 中传递。

我将我的文件 URL 作为字符串传递 - 通过不添加 @ 符号。所以原始调用的工作版本(在 API 的 suggested format 中)看起来像这样:

curl -XPOST "https://api.meaningcloud.com/parser-2.0?key={my_api_key}&of=json&lang=es&doc=@Users/Martin/Documents/text.txt" -o output.json 

【讨论】:

  • ...最好去掉“-X POST”
  • 太棒了!它可以在没有“-X POST”的情况下工作,再次感谢!我认为那是因为现在我正在传递一个文件,所以不需要使用 POST 来允许更长的字符串,这是正确的吗?
  • 不,这是因为-F意味着做一个POST,你坚持这样做只会导致你以后想到添加-L或类似的错误。
猜你喜欢
  • 2020-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-03
  • 1970-01-01
相关资源
最近更新 更多