我正在运行docker api函数:
func(cli * Client)ContainerExecAttach(ctx context.Context,execID字符串,配置类型.ExecConfig)(types.HijackedResponse,错误)
当我使用内置的bufio阅读器读取响应时:
line, _, err := resp.Reader.ReadLine()
我没有收到任何错误,但是如果我尝试将字节转换为字符串,则应用程序将崩溃-有问题的应用程序是Windows服务,因此,我认为我正在努力从中获取错误。
我现在设法使用(事件查看器的日志)查看输出:
logger.Infof("res: %q", line)
输出是:
res:“ \ x01 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00X {\”更新\“:false,\”扫描\“:false,\”进度\“:0,\”发现\“:false, \“已注册\”:false}“
现在,我期望使用json,但最不喜欢使用时髦的前缀,您知道这些字节是什么以及为什么它们在那里吗?我希望这能告诉我下一个问题;首先清除或不接收它们的最干净方法是什么?
我目前正以固定长度修整字节,但我认为我需要做一些更复杂的事情。我在想将这些字节修剪掉:\x01 \x00但是不确定我是否应该期待其他任何字节
\x01
\x00
您返回的HTTP响应是此处记录的Docker流格式。
您应该考虑使用该github.com/docker/docker/pkg/stdcopy.StdCopy函数将流解复用为stdout / stderr。
github.com/docker/docker/pkg/stdcopy.StdCopy