請隨身攜帶新的C#,讓我的腳溼透。C#Web API - 流媒體內容不斷更新8x8流媒體服務
我試圖創建一個簡單的控制檯應用程序。
我們有一個來自8x8的呼叫系統,它提供了一個網絡流媒體API,但他們的文檔非常有限,沒有任何C#。
api服務流近乎實時地調用狀態,我希望得到'流'並能夠在可能的情況下實時讀取和處理它。響應或內容類型是'text/html'。但響應的實際體可以聲明爲JSON - 以下樣品:
{ 「相互作用」:{ 「attachedData」:{ 「attachedDatum」:[{ 「attachedDataKey」: 「@ PRI」,「attachedDataValue 「:100},{」 attachedDataKey 「:」 callingName」, 「attachedDataValue」:999999999999},{ 「attachedDataKey」: 「茶」, 「attachedDataValue」:99999999999},{ 「attachedDataKey」: 「CNT」, 「attachedDataValue」: 0},{ 「attachedDataKey」: 「CON」, 「attachedDataValue」:0},{ 「attachedDataKey」: 「配有」, 「attachedDataValue」: 「T」},{ 「attachedDataKey」: 「PHO」, 「attachedDataValue」: 9999999999},{ 「attachedDataKey」: 「PHONENUM」, 「attachedDataValue」:9999999999},{ 「attachedDataKey」: 「TOK」, 「attachedDataValue」:999999999}]}, 「事件」: 「InteractionCreated」, 「inboundChannelid」:9999999999 ,「interactionEventTS」:9999999,「interactionGUID」:「int-15b875d0da2-DJOJkDhDsrh3AIaFP8VkICv9t-phone-01-testist」,「resourceType」:0}}
我已經看到了幾個關於httpClient和GetAsync方法的文章,但是這些文章看起來都不起作用,因爲它們看起來是在進行響應時進行調用,而不是持續響應。
使用fiddler進行調用時,它看起來並沒有關閉,因此流不斷運行,因此在單獨的用戶或實例連接之前,fiddler不會顯示任何數據。
當我使用瀏覽器時,內容會「流」到頁面並自動更新並顯示所有內容(如上所述)。
api包含身份驗證,所以當另一個客戶端連接並檢索數據時,連接的客戶端關閉,最後我能夠看到正在收集的數據。
這是代碼,這樣,當其他客戶端連接,但最好我想實時響應,似乎只是陷在GETASYNC方法並返回大流:
var response = await client.GetAsync(address, HttpCompletionOption.ResponseHeadersRead);
if (response.IsSuccessStatusCode)
{
var responseContent = response.Content;
string responseString = await responseContent.ReadAsStringAsync();
Console.WriteLine(responseString);
}
希望這是足夠的信息,你們中的一個聰明人幫助我解決困境。
在此先感謝
嘿,感謝。 我的問題與他們沒有給我流式傳輸的正確URL相比,他們的在線垃圾文檔相結合。這個讀取塊的快速問題是否會在通話結束時讀取?或者這會在中途切斷通話嗎? – TheNerdyNerd
它會繼續閱讀直到通話結束,除非發生錯誤。只要保持流式傳輸,這將繼續閱讀。我們最終使用了Newtonsoft JsonTextReader而不是閱讀原始流,因此我們可以在每次讀取時獲得謹慎的JSON對象,但概念保持不變。 –