【问题标题】:Curl output file not created未创建卷曲输出文件
【发布时间】:2020-04-22 06:54:38
【问题描述】:

概述:我们使用现成的映射工具来进行数据映射(创建 JSON 文件等)。然后,我们使用该工具调用 exe,以便让 Curl 将 JSON 文件发布到 API。这很好用,除了能够创建输出文件(向我们展示 API 连接的结果)。当我们从命令行运行 exe 时,输出文件会成功创建,但是当我们通过从其他工具调用它来运行完全相同的命令时,不会创建输出文件。有人对如何解决此问题有任何想法吗?

我们有以下 curl 命令来处理 PUT API 调用。我们使用请求文件,并打算生成响应输出文件(用于监控 webAPI 结果)和跟踪日志(用于调试目的)。

curl --request PUT "https://client.mirakl.net//api/orders/order101/tracking" ^
-d @"D:\HSG\Test\PUTOR23\order101.json" ^
-o "D:\HSG\Test\PUTOR23\Output\order101_out.txt" ^
--trace-ascii "D:\HSG\Test\PUTOR23\Outputorder101_TRACE.txt"

此命令在命令行中运行良好(生成输出和跟踪文件)。

但是当我们从映射工具执行完全相同的命令时,它不会生成输出文件(跟踪文件确实更新成功)。 Curl 能够读取请求数据文件并生成跟踪文件。但由于某种原因,没有生成输出文件。

我们尝试了 -o、-O 和控制台重定向 > 选项,但当从我们的映射工具调用时,似乎都没有生成输出文件。

【问题讨论】:

  • 尝试更改您的工具以调用一些简单的命令来创建输出文件(在 Unix 中,这将是 touch,但您使用的是 Windows,因此请尝试 copy nul: "D:\HSG\Test\PUTOR23\Output\order101_out.txt"),看看它是否有效。如果是,请关注curl。如果没有,请关注您的工具运行的环境。也许它有一些时髦的东西。
  • 如果您尝试将输出文件放在跟踪目录中会发生什么?也许“输出”目录有一些工具无法访问的奇怪权限? stderr 去哪里了,你能看到吗?或者如果你交换跟踪文件名和输出文件名(包括路径)会发生什么,因为跟踪文件有效?
  • 谢谢@eewanco。我们已经验证不存在文件读/写访问问题(我们能够使用 -d @ 读取数据文件并输出 --trace)。这些问题特定于输出。我也怀疑它是否与 curl 相关,因为我尝试了一个带有 > 运算符的简单 .bat 将数据输出到物理(类型 sample.json > output.json),但它再次从我们的工具中失败。然而我觉得奇怪为什么 curl 能够产生跟踪而不是输出(将尝试静默模式)。谢谢。

标签: file curl output httpwebresponse


【解决方案1】:

curl 命令选项中没有什么需要纠正的,我们怀疑我们的映射工具以某种方式阻止了控制台输出(因此也可能因为不允许输出而没有创建输出文件)。

为了克服这个限制,我们使用 包装 curl 命令 在批处理 (.bat) 文件中。并确保既不卷曲也不 批处理文件在控制台上产生任何输出。使用 curl 的 --silent 选项 并使用 -o 悄悄地将输出重定向到一个文件(我们 通缉)。它奏效了!

不知何故,批处理文件中的 curl 命令执行没有被我们的映射工具干扰,它允许创建响应输出文件。听起来有些杂乱无章,但确实有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    • 1970-01-01
    • 2023-04-08
    • 2013-02-21
    相关资源
    最近更新 更多