У меня проблема с использованием RestHeart. Я хочу удалить определенный документ на сервере MongoDB, и я подтвердил, что приведенная ниже команда отлично работает в командной строке.HttpClient delete with RestHeart
http delete localhost:8080/mytest/users/56dda76daeb32b0860d909e1 if-match:56dda76daeb32b0860d909e2
документ был правильно удален, а затем я создал документ в той же коллекции, что я написал некоторые C# код, чтобы удалить новый созданный документ.
public async void TryDeleteAsync() {
using(var client = new HttpClient()) {
client.BaseAddress = new Uri("http://127.0.0.1:8080/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.IfMatch.Clear();
client.DefaultRequestHeaders.IfMatch.Add(new EntityTagHeaderValue("\"56dda76daeb32b0860d909e5\""));
HttpResponseMessage response = await client.DeleteAsync("/mytest/users/56dda76daeb32b0860d909e4");
if(response.IsSuccessStatusCode) {
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
}
Документ и идентификатор ETag верны, но я получил ответ 412 precondtion failed message. Что не так в этом коде?
Спасибо.
Спасибо Андреа, и я нашел связанные с этим вопросы: http://stackoverflow.com/a/17344681/6030429 IfMatch.Add() метод требует EntityTagHeaderValue, но он вызывает исключение формат, если строка делает не включают кавычки. Кажется, что HttpRequestMessage.Headers.TryAddWithoutValidation («If-Match», «etag») работает, но я не уверен, правильно ли этот путь. –