Golang gRPC 流 XML 文件服务器端

问题描述

目标: 当我在浏览器中打开 localhost:9000/xml 页面时,我希望看到 xml 内容(很大)。我使用带有 grpc-gateway 的 gRPC 服务器作为代理。

要发送我的 xml 文件,我使用服务器端流并使用 google.api.HttpBody 内容类型发送 text/xml 消息。以下是我用于流式传输 xml 的服务器代码的一部分:

reader := bytes.NewReader(data) // "data" is a large xml file
buffer := make([]byte,1024)

for {
    n,err := reader.Read(buffer)
    if err == io.EOF {
        break
    }
    if err != nil {
        return status.Error(codes.Internal,"")
    }

    if err := stream.Send(&httpbody.HttpBody{
        ContentType: "text/xml",Data:        buffer[:n],}); err != nil {
        return status.Error(codes.Internal,"")
    }
}

不幸的是,当我在浏览器中打开 localhost:9000/xml 时,我发现我的 xml 响应已损坏。每 1025 个字节换行,例如:

...
...
<loc>https://example.com/books/1</l
        oc>
...
...

如何流式传输大型 xml 内容而不破坏它?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)