Я использую HttpClient из WP8 и делаю запрос Post. Я знаю, что вызов может занять много времени, так как я фактически имитирую медленные сетевые сценарии. Поэтому я установил HttpClient.Timeout
соответственно на 5 минут.
Тем не менее, я получаю тайм-аут около 60 с. Я считаю, что тайм-аут не работает. Я считаю, что есть проблема с этим для WP, как указано в этом вопросе: HttpClient Portable возвращает 404 notfound на WP8.
Они используют обходной путь, но это не относится к моему сценарию. Я действительно хочу долго ждать.
Мои вопросы:
1) Это ошибка/проблема HttpClient для WP8 или я неправильно его устанавливаю? 2) Вы думаете об обходном пути, все еще использующем HttpClient?
Я читал, что, возможно, HttpWebRequest является вариантом. Однако я считаю, что HttpClient должен идеально подходить для этого «простого» сценария.
Мой код прост:
private static async Task<HttpResponseMessage> PostAsync(Uri serverUri, HttpContent httpContent)
{
var client = new HttpClient();
client.Timeout = TimeSpan.FromMinutes(5);
return await client.PostAsync(serverUri, httpContent).ConfigureAwait(false);
}
Сервер получает запрос и во время его обработки клиент прерывает работу.
ОБНОВЛЕНИЕ: HttpResponseMessage
, возвращаемый HttpClient.PostAsyn
, это "{StatusCode: 404, ReasonPhrase: '', Version: 0.0, Content: System.Net.Http.StreamContent, Headers: { Content-Length: 0 }}"
. Как я уже сказал, сервер найден, принимает данные и обрабатывает их.