WebRequest to Shoutcast引发“无效或无法识别的响应”异常

时间:2018-09-30 19:19:55

标签: asp.net-web-api webrequest

我正在尝试使用ASP.net WebAPI,.net core 2.1从shoutcast流中读取元数据。我需要的只是标题,而不是音频数据。 我发现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使它工作?

1 个答案:

答案 0 :(得分:0)

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

要注意的是,我最初使用点网框架而不是点网核心尝试了我的代码,并且运行良好,因此我认为HttpWebResponse在某些情况下与点网核心不兼容。 如果使用HttpClient仍然无法解决您的问题,请查看以下链接。希望对您有所帮助。 https://github.com/dotnet/corefx/issues/14897

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