【发布时间】:2019-02-15 20:23:49
【问题描述】:
我正在使用 Httpclient C# .net 连接到一个 url。
我需要发出一个 GET 请求。这种连接是持久的。 问题是我需要根据服务器发送给我的通知执行操作。
在执行HttpResponseMessage 时,它挂起(持续工作并不断接收通知,但它永远不会让我重新控制以便能够根据服务器的通知工作)
取消执行时,我可以通过控制台查看所有通知。
有什么方法可以控制HttpResponseMessage 以便能够处理服务器发送给我的每个响应?
我应该为此使用其他类型的技术吗?
这是我在取消操作时通过控制台 de "await response.Content.ReadAsStringAsync ();" 返回的内容。
<? xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<message xmlns = "http://asdasd.com/asd/08/DS/Sync" xmlns: ns2 = "http: // asdadasdasdasd">
<event> KEEPALIVE </ event>
</ message>
<? xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<message xmlns = "http://asdasd.com/asd/08/DS/Sync" xmlns: ns2 = "http: // asdadasdasdasd">
<event> KEEPALIVE </ event>
</ message>
<? xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<message xmlns = "http://asdasd.com/asd/08/DS/Sync" xmlns: ns2 = "http: // asdadasdasdasd">
<event> KEEPALIVE </ event>
</ message>
每条(“消息”)大约每 2 分钟到达一次我希望每次收到一条消息时都可以执行一项操作 我留下了 ultilizo 的代码。谢谢
public async static Task<int> GetRequest(string url)
{
HttpClient client = new HttpClient();
HttpResponseMessage response = new HttpResponseMessage();
response = await client.GetAsync(url, HttpCompletionOption.ResponseHeadersRead);
Console.WriteLine("STATUS OF CONNECTION");
Console.WriteLine(response.StatusCode);
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync().ConfigureAwait(continueOnCapturedContext: false); ;
Console.WriteLine("ANSWER");
Console.WriteLine(body);
Console.WriteLine(" \n");
Console.WriteLine("\n ATTENTION!! Disconnected from the Persistence line \n");
Console.WriteLine("Connections done");
int result1 = 1;
return result1;
}
【问题讨论】:
-
您需要以某种方式暂停它,同时仍然保持打开状态stackoverflow.com/a/16004845/10634638
标签: c# dotnet-httpclient