如何让.Net等待Web服务的第二次响应

时间:2019-08-27 08:52:52

标签: c# http asynchronous response

我正在将XML请求发送到Web服务,此Web服务向我发送响应,表明已收到我发送的请求,并且将执行测试。该响应包括一个(唯一的)标识字符串。该测试最多需要一分钟才能执行。测试完成后,Web服务将发送另一个包含测试结果的响应(没有我方的发起请求)。 我不知道如何告诉.Net等待Web服务的第二次响应。

我尝试过调用服务的同步和异步,但是看起来问题是收到的.Net关闭流的200条消息。我的猜测是,我忽略了HTTP请求和多个响应如何工作的基本细节。

response = client.UploadString(uri, "POST", xml.ToString());

response = await client.UploadStringTaskAsync(uri, "POST", xml.ToString());

我希望收集第二个响应并将其最终存储在数据库中。在当前情况下,第二个答案丢失了,因为它永远不会在我这边得到。

2 个答案:

答案 0 :(得分:1)

您的问题过于笼统,因此很难准确地回答如何解决您的问题。 但是据我所知,来自C#的HTTP请求无法像您提到的那样工作。 每当您发出请求时,服务器(Web服务)都会返回一个响应(或一个错误)。如果您希望服务器(Web服务)通知客户端(您的应用程序),则客户端需要以某种方式订阅服务器并处理来自服务器的通知

答案 1 :(得分:0)

每个人(和我自己的第一个想法)都是正确的。按照文档建议的方式进行操作是不可能的。与供应商联系后,他们告诉我提供一个URL,他们可以在其中发布第二个(异步)响应。

简而言之: -我需要向供应商提供可以响应的网址或电子邮件地址。 -我向他们的网络服务发送了请求。 -根据状态初始响应,可以将第二个响应发送到我们这边的预配置响应选项。