如何检索实时媒体流的HttpResponseMessage内容头(在使用c#的windows应用商店应用程序中)

如何检索实时媒体流的HttpResponseMessage内容头(在使用c#的windows应用商店应用程序中),c#,httpresponse,windows-8.1,shoutcast,C#,Httpresponse,Windows 8.1,Shoutcast,我正在为Windows 8.1制作一个在线广播应用程序,并希望使用新的Windows.Web.Http API(以便发送自定义Http头以从实时媒体流获取元数据)与shoutcast服务器通信 响应头是空的,我需要在开始读取流数据之前读取内容头 这是我尝试使用的代码: Uri uri = new Uri(Url); var baseFilter = new HttpBaseProtocolFilter(); ShoutcastHttpFilter filter = new ShoutcastHt

我正在为Windows 8.1制作一个在线广播应用程序,并希望使用新的
Windows.Web.Http API
(以便发送自定义Http头以从实时媒体流获取元数据)与
shoutcast
服务器通信

响应头是空的,我需要在开始读取流数据之前读取内容头

这是我尝试使用的代码:

Uri uri = new Uri(Url);
var baseFilter = new HttpBaseProtocolFilter();
ShoutcastHttpFilter filter = new ShoutcastHttpFilter(baseFilter);
var HClient = new HttpClient(filter);
HttpResponseMessage response = await HClient.GetAsync(uri, HttpCompletionOption.ResponseHeadersRead);

Task streaming = null;
Stream stream = null;
stream = response.Content.ReadAsInputStreamAsync().GetResults().AsStreamForRead();

string str = response.Content.Headers["Icy-MetaInt"];
当我运行/调试代码时,内容显示为“unbuffered”,并且没有标题。 如何获取内容标题和流

这是我在ShoutcastHttpFilter中使用的代码:

request.Headers.Clear();
request.Headers.Add("Icy-MetaData", "1");
request.Headers["User-Agent"] = "VLC media player";
request.Headers["Connection"] = "Close";
HttpResponseMessage response = await innerFilter.SendRequestAsync(request).AsTask(cancellationToken, progress);

cancellationToken.ThrowIfCancellationRequested();
return response;

如果标题名称不以
Content-*
开头,则标题必须位于响应标题中

这样做:

Uri uri = new Uri("http://example.com");
HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync(
    uri,
    HttpCompletionOption.ResponseHeadersRead);
string value = response.Headers["Icy-MetaInt"];

我已经先尝试了响应标题,它是空的。mscorlib.dll中出现“System.Collections.Generic.KeyNotFoundException”类型的异常,但未在用户代码中处理“您可以捕获或跟踪吗?以及共享
ShoutcastHttpFilter
源代码吗?我使用Wireshark检查请求和响应,请求头包括由ShoutcastHttpFilter添加的自定义头,响应没有头。ShoutcastHttpFilter是从IHttpFilter扩展而来的,用于为Shoutcast服务器添加自定义头。我已经编辑了问题以添加代码。您是说服务器在响应中根本不包含标题吗?什么是服务器URI?