С помощью HttpClient.DeleteAsync и содержание.ReadAdStringAsync всегда возвращает null
когда я использую
3 ответов
ваш код никогда не проверяет ответ сообщения для StatusCode. В отличие от WebClient, HttpClient не бросает, когда StatusCode не находится в диапазоне 2xx.
Я уверен, что если вы проверите HttpResponseMessage.StatusCode/HttpResonseMessage.ReasonPhrase значения вы обнаружите, что сервер вернул код, отличный от 200.
например:
HttpClient _client = new HttpClient();
_client.BaseAddress = new Uri("http://httpbin.org/");
...
var response = await _client.DeleteAsync("/delete");
if (response.IsSuccessStatusCode)
{
var result=await response.Content.ReadAsStringAsync();
....
}
вы также можете позвонить EnsureSuccessStatusCode метод для создания исключения, если состояние ответа не является кодом успеха:
HttpClient _client = new HttpClient();
_client.BaseAddress = new Uri("http://httpbin.org/");
...
var response = await _client.DeleteAsync("/delete");
response.EnsureSuccessStatusCode();
var result=await response.Content.ReadAsStringAsync();
редактировать
кстати, запуск следующего, как на .NET 4.5, возвращает тело:
var _client = new HttpClient();
_client.BaseAddress = new Uri("http://httpbin.org/");
var response = await _client.DeleteAsync("/delete");
if (response.IsSuccessStatusCode)
{
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
добавлять Accept
заголовок не имеет никакого значения
У меня тот же случай... на данный момент я не знаю перегрузки метода для DeleteAsync, которые принимают параметры контента, такие как post. Поэтому я переключаю API с Delete на Post.
знаете ли вы:
base_address + relative_address
"http://www.youdomain.com/myservice/" + "/test" = "/test".
вот почему вы ничего не получаете