确定 StreamReader 的内容?

发布于 2025-01-02 02:05:55 字数 283 浏览 0 评论 0原文

我被迫使用蹩脚的第 3 方 API,其中返回类型不一致。因此,我提交一个编程式 Web 请求,夺回 Stream,底层内容可能是一条错误消息(更糟糕的是,因为它可以是原始文本,也可以是它们返回的 xml),或者返回一个二进制文件。我无法知道任何给定请求的格式,因此我需要一种在运行时反省的方法。

我应该如何解决这个问题?该流是不可搜索的,所以除了读取它之外我不能做任何事情。我通常尝试不使用异常处理来进行流量控制,但这似乎可能是处理它的最佳方法。始终将其视为预期的二进制文件类型,如果出现任何问题,则捕获异常并尝试提取应为错误消息的内容

I am forced to work with a crappy 3rd party API where there is no consistency with the return type. So I submit a programmatic web request, grab the Stream back and the underlying content might be an error message (worse still because it can be either raw text, or xml they return) or it returns a binary file. I have no means of knowing what format to expect with any given request so I need a way to introspect this at runtime.

How should I go about tackling this? The stream is non-seekable so I can't do anything other than read it. I usually try not to use exception handling for flow control but it seems like that might be the best way to handle it. Always treat it like it should be the expected binary file type and if anything blows up then catch the exception and try to extract what should be an error message

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

暖树树初阳… 2025-01-09 02:05:55

我想到的一件事是检查流中的前 x 个字节。如果第一位是格式良好的 xml,那么它可能是 xml。问题是试图确定原始文本或二进制之间的差异。

One thing that comes to mind is to examine the first x number of bytes in the stream. If the first bit is well formed xml, then it's probably xml. The problem is trying to determine the difference between raw text or binary.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文