我正在执行GET请求并接收json或“二进制”数据。根据我的测试,json响应的机会离掷硬币不远。当我收到二进制数据时,还会收到“ Content-Length:xxx”或“ Transfer-Encoding:chunked”响应标头(或多或少有50-50的机会)。我没有注意到同时获得两个标头(如果我在下面的代码段中为curl添加了-i选项)。但是我的确收到了json响应的“ Content-Length”头。通常json响应的大小为280kB,而分块响应的大小约为40kB。
curl -o output.json\
-H "Content-Type: application/json;charset=UTF-8"\
"www.example.com/data"\
&& ./process-output.sh
我想找到一个解决方案,在执行下一个脚本之前,可以确定整个响应都在“ output.json”中。
-编辑-
我当前的解决方案是使用file output.json | grep -c "UTF-8 Unicode"
检查输出并重试(最多5次)。大多数人会说这是一个丑陋的解决方法,有些人甚至可能停止与我交谈。我希望我不需要使用这样的“解决方案”。
答案 0 :(得分:0)
curl -N
(无缓冲区)是否可以解决您的问题?
我以前通过将curl传递到json格式器上看到了这一点-curl在最后一个分块的响应部分发送到STDOUT之前捕获了SIGPIPE并返回成功(因此您的shell进入处理步骤)。