簡體   English   中英

如何檢索實時媒體流的HttpResponseMessage內容標頭(在Windows商店應用中,使用C#)

[英]How to retrieve HttpResponseMessage content headers for a live media stream (in a windows store app using c#)

我正在制作一個適用於Windows 8.1的在線廣播應用程序,並希望使用新的Windows.Web.Http APIshoutcast服務器進行通信(以便發送自定義HTTP標頭以從實時媒體流中獲取元數據)。

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

這是我嘗試使用的代碼:

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;

如果標頭名稱不是以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"];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM