2

目标:当我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 内容而不破坏它?

4

0 回答 0