2014-04-01 34 views
0

我正在製作適用於Windows 8.1的在線廣播應用程序,並且想要使用新的Windows.Web.Http APIshoutcast服務器進行通信(爲了發送自定義HTTP頭部以從實況媒體流獲取元數據)。如何檢索實時媒體流的HttpResponseMessage內容標題(在使用c#的Windows應用商店應用程序中)

響應頭是空的,我需要在開始讀取流數據之前先讀取內容頭。

這是我嘗試使用代碼:

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"]; 

當我運行/調試代碼,內容顯示爲「無緩衝」,並沒有頭。 如何獲取內容標題和流?

這我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; 

回答

0

如果頭名不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"]; 
+0

我已經嘗試過的響應頭第一,它是空的。 「在mscorlib.dll中發生類型'System.Collections.Generic.KeyNotFoundException'的異常,但未在用戶代碼中處理」 – Abdelrahman0101

+0

您可以捕獲[NetMon](http://www.microsoft.com/en-us/download /details.aspx?id=4865)或[Fiddler](http://www.telerik.com/fiddler)跟蹤? – kiewic

+0

以及分享'ShoutcastHttpFilter'源代碼? – kiewic

相關問題