Kiedy używam DeleteAsync
funkcję w HttpClient
(System.Net.Http) i pobrać zawartość z Content.ReadAsStringAsync()
zawsze dotrzesz null
zwrócone.HttpClient.DeleteAsync i Content.ReadAdStringAsync zawsze zwraca wartość null
Próbowałem tego samego z GET
, POST
i PUT
- i zawsze zwracają pewne wyniki.
Oto mój kod:
HttpClient _client = new HttpClient();
_client.BaseAddress = new Uri("http://httpbin.org/");
_client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = _client.DeleteAsync("/delete").Result;
string res = await response.Content.ReadAsStringAsync();
return await JsonConvert.DeserializeObjectAsync<T>(res);
zawsze dotrzesz null
zwrócone.
Jednak to wszystko działa:
GET:
HttpResponseMessage response = _client.GetAsync("/get").Result;
string res = await response.Content.ReadAsStringAsync();
return await JsonConvert.DeserializeObjectAsync<T>(res);
POST:
HttpResponseMessage response = _client.PostAsync("/post", new StringContent(JsonConvert.SerializeObject(obj), Encoding.UTF8, "application/json")).Result;
string res = await response.Content.ReadAsStringAsync();
return await JsonConvert.DeserializeObjectAsync<T>(res);
PUT:
HttpResponseMessage response = _client.PutAsync("/put", new StringContent(JsonConvert.SerializeObject(obj), Encoding.UTF8, "application/json")).Result;
string res = await response.Content.ReadAsStringAsync();
return await JsonConvert.DeserializeObjectAsync<T>(res);
Ale DeleteAsync()
i ReadAsStringAsync()
zawsze zwraca mi null
.
Zgodnie z RFC należy przywrócić treść po przywróceniu kodu stanu 200 OK.
Czy próbowałeś użyć [Skrzypek] (http://fiddler2.com/), aby zobaczyć co się dzieje na drucie? –
Nie powinno to wpłynąć na wynik, ale z jakiegokolwiek powodu, dlaczego blokujesz (wywołujesz '.Result') na" DeleteAsync "zamiast czekać na niego? – cremor
@ Boker Rookie błąd. – Gaui