【发布时间】:2017-09-16 06:59:26
【问题描述】:
我尝试创建一个简单的控制台应用程序。
我们有一个来自 8x8 的调用系统,它提供了一个 Web 流 API,但它们的文档非常有限,而且 C# 中没有任何内容。
api 服务流近乎实时地调用状态,我希望获得该“流”并能够在可能的情况下实时读取和处理它。响应或内容类型为“text/html”。但是响应的实际正文可以声明为 json - 示例如下:
{"交互":{"attachedData":{"attachedDatum":[{"attachedDataKey":"@pri","attachedDataValue":100},{"attachedDataKey":"callingName","attachedDataValue":999999999999 },{"attachedDataKey":"cha","attachedDataValue":99999999999},{"attachedDataKey":"cnt","attachedDataValue":0},{"attachedDataKey":"con","attachedDataValue":0}, {"attachedDataKey":"med","attachedDataValue":"T"},{"attachedDataKey":"pho","attachedDataValue":9999999999},{"attachedDataKey":"phoneNum","attachedDataValue":9999999999}, {"attachedDataKey":"tok","attachedDataValue":999999999}]},"event":"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);
}
希望这些信息足以让你们中的一个聪明人帮助我摆脱困境。
【问题讨论】:
标签: c# web-services api asp.net-web-api stream