Как отправить POST в остальные API и потреблять нескончаемый поток в C #? - PullRequest
2 голосов
/ 12 октября 2019

Мне нужно потреблять поток api отдыха. Дело в том, что этот поток непрерывен, и мне нужно ПОСТАВИТЬ в него JSON, чтобы он знал, что делать обратно.

Можете ли вы, ребята, помочь мне? Это то, что у меня есть сейчас, но проблема в том, что _httpClient.PostAsync () никогда не завершается.

    var content = new StringContent("whatever", Encoding.UTF8, "application/json");

    var response = await _httpClient.PostAsync("URL", content);

    //not reaching this point here

    var stream = await response.Content.ReadAsStreamAsync();

Ответы [ 2 ]

3 голосов
/ 12 октября 2019

Не уверен, поможет ли это вам, но вы можете указать HTTPClient, ждать ли полного ответа или только заголовков, если вы используете метод SendAsync:

var request = new HttpRequestMessage(HttpMethod.Post, "URL");
request.Content = new StringContent("whatever", Encoding.UTF8, "application/json");

var response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
var stream = await response.Content.ReadAsStreamAsync();
2 голосов
/ 12 октября 2019

Хотя не рекомендуется использовать http для этой цели, но вы можете добиться этого с помощью этого кода

HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "URL");
request.Content = new StringContent("whatever", Encoding.UTF8, "application/json");
await _httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);

ключевая часть здесь - HttpCompletionOption.ResponseHeadersRead, которая завершает SendAsync, как только поток ответаготов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...