首页 > 解决方案 > 对 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 工作?

标签: asp.net-web-apiwebrequest

解决方案


我有同样的问题。我使用 HttpClient 和 PostAsync 来解决这个问题。

请注意,我最初使用 dot net framework 而不是 dot net core 尝试了我的代码并且它工作正常,所以我认为 HttpWebResponse 在某些情况下与 dot net core 不兼容。如果使用 HttpClient 仍然不能解决您的问题,请查看以下链接。我希望它有所帮助。 https://github.com/dotnet/corefx/issues/14897

https://github.com/dotnet/corefx/issues/30040


推荐阅读