1
我在使用RestHeart時遇到問題。我想刪除MongoDB服務器中的特定文檔,並確認以下命令在命令提示符下正常工作。HttpClient使用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);
}
}
}
Document和ETag ID是正確的,但我得到了響應412 precondtion失敗的消息。這段代碼有什麼問題?
謝謝。
感謝安德烈,我發現了一個相關的問題:http://stackoverflow.com/a/17344681/6030429 IfMatch.Add()方法需要EntityTagHeaderValue但如果一個字符串做它調用格式異常不包括引號。看起來HttpRequestMessage.Headers.TryAddWithoutValidation(「If-Match」,「etag」)有效,但我不確定這種方式是否正確。 –