HttpClient,来自单个调用的多个异步结果

时间:2013-12-01 07:42:59

标签: c# httpclient async-await

我被困住了,并且已经对这个问题猛烈抨击了几天,我希望能够提供帮助。

我正在调用一个http服务,该服务在执行时将启动一个将发回多个状态消息的进程。数据以Json字符串形式返回,然后反序列化为对象。

我试图创建的代码已经作为NPAPI浏览器插件中的COM对象存在,但是谷歌最近决定杀死这些插件我不得不寻找一种新方法来获取我的数据。

到目前为止,我已经根据我的工作代码制作了壮观的瑞士奶酪,并且能够得到第一个结果,就是这样。这是我工作的一个片段,基本前提是该服务被称为异步,然后结果循环,直到我得到最终状态结果。不幸的是,我知道这不对,因为我在第二次迭代时遇到连接终止错误。

var httpClient = new HttpClient();

await httpClient.GetAsync(url).ContinueWith(
  (task) =>
    {
      do
      {
        var response = task.Result;

        var data = response.Content.ReadAsStringAsync().ContinueWith(
          (readTask) =>
            {
              var data2 = readTask.Result;

              foo++;
            });
      }while (foo < 5);
    });

有没有人有任何建议?谢谢你的帮助!

修改

根据svick的要求,这里有更多信息。正如我所说,正在执行的代码返回多个状态消息。因此,我可能会收到0%完成,5%,20%,25%等的消息,一直到100%。我想要做的是捕获所有消息,直到我收到消息说状态是100%完成。

我也尝试过使用ReadAsStringAsync方法,它只返回第一条状态消息,然后关闭连接。

再次感谢!

更新 好吧,事实证明我一直都是这样做的。显然,在服务中内置了一个结果调用,我可以查询以获取我想要的数据。我想我错过了架构会议的那一部分。

感谢所有评论或评论过的人!

1 个答案:

答案 0 :(得分:0)

解决方案是使用结果调用我不知道存在的服务。我不需要弄清楚如何做我上面描述的事情。