【发布时间】: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