asp.net-web-api - 对 Shoutcast 的 WebRequest 引发“无效或无法识别的响应”异常
问题描述
我正在尝试使用 ASP.net WebAPI、.net core 2.1 从广播流中读取元数据。我需要的只是标题而不是音频数据。我发现 Shoutcast 服务器 2+ 提供 stats xml 页面,但出于兼容性原因,我需要解决这个问题,以便我也可以支持 v1。/7.html 没有给出标题和流派。以下是一段相关代码:
HttpWebRequest request = null;
HttpWebResponse response = null;
request = (HttpWebRequest)WebRequest.Create(server);
request.Headers.Clear();
request.Headers.Add("GET", "/ HTTP/1.0");
// needed to receive metadata information
request.Headers.Add("Icy-MetaData", "1");
request.UserAgent = "WinampMPEG/5.09";
response = (HttpWebResponse)request.GetResponse();
info.Title=response.Headers["icy-name"];
info.Genre=response.Headers["icy-genre"];
当我在 IIS Express 上运行此代码或在 IIS 上发布和运行时,我收到此错误:
An unhandled exception occurred while processing the request.
HttpRequestException: The server returned an invalid or unrecognized response.
System.Net.Http.HttpConnection.ThrowInvalidHttpResponse()
WebException: The server returned an invalid or unrecognized response.
System.Net.HttpWebRequest.GetResponse()
我也尝试过 WebClient 和 StreamReader,但问题似乎是一致的。但是我在控制台应用程序中尝试了相同的代码,它似乎工作得很好。
我怎样才能让它通过 IIS 上的 WebAPI 工作?
解决方案
我有同样的问题。我使用 HttpClient 和 PostAsync 来解决这个问题。
请注意,我最初使用 dot net framework 而不是 dot net core 尝试了我的代码并且它工作正常,所以我认为 HttpWebResponse 在某些情况下与 dot net core 不兼容。如果使用 HttpClient 仍然不能解决您的问题,请查看以下链接。我希望它有所帮助。 https://github.com/dotnet/corefx/issues/14897
推荐阅读
- html - jinja2.exceptions.UndefinedError - 试图达到特定值
- swift - SwiftUI onMoveCommand 操作未执行
- qt - QXmlStreamWriter 在不写入任何文本元素时写入根元素的不同开头
- python - 迭代行以分隔具有不同值的行
- html - 隐藏或显示传输图标
- ansible - Ansible:仅在上一个任务成功并创建输出时才触发任务
- vba - 使用带有 introp 的 CefSharp 嵌入 Microsoft Access 表单
- javascript - 什么是 .cshtml 文件中的“this”关键字以及如何在 .js 文件中使用 .cshtml 代码
- sockets - tmux 服务器不使用 /tmp/tmux-
/默认,不能列出也不能附加会话 - python - 使用 GeoPy 时的打印问题