[英]Posting JSON to DocumentDB through REST API
剛剛從Sql Server過渡到Microsoft的DocumentDB服務,我正在努力通過他們的REST API( https://msdn.microsoft.com/en-us/library/azure/dn803948.aspx )創建一個文檔。 我試過RestSharp和WebClient沒有運氣。 我確信這可能是一個簡單的疏忽。 下面的代碼有一個Account對象,只有所需的屬性(id)...只是為了測試。 任何幫助都會很棒。
public class Account
{
public string id { get; set; }
}
////////////////////////////////////
Account customerAcc = new Account
{
id = "test1"
};
////////////////////////////////////////////
var baseUrl = Environment.GetEnvironmentVariable("APPSETTING_documentDB_endpoint");
var primary_key = Environment.GetEnvironmentVariable("APPSETTING_documentDB_primary_key");
var client = new RestClient(baseUrl);
var data = "type=master&ver=1.0&sig=" + primary_key;
RestRequest restRequest = new RestRequest(Method.POST);
restRequest.RequestFormat = DataFormat.Json;
restRequest.AddHeader("Authorization", data);
restRequest.AddHeader("x-ms-date",now.ToUniversalTime().ToString());
restRequest.AddBody(customerAcc);
IRestResponse irestResponse = client.Execute(restRequest);
///////////////////////////////////// OR WITH SYSTEM.NET.WEBCLIENT
string result = "";
using (var newClient = new System.Net.WebClient())
{
newClient.Headers[System.Net.HttpRequestHeader.ContentType] = "application/json";
newClient.Headers["Authorization"] = data;
newClient.Headers["x-ms-date"] = now.ToUniversalTime().ToString();
result = newClient.UploadString(baseUrl, "POST", "{\"id\":\"test1\"}");
}
呼叫已獲得授權,但繼續獲得400狀態代碼(BAD REQUEST)響應。 我已經嘗試序列化該對象,並用restRequest.AddParameter(“application / json; charset = utf-8”,json,ParameterType.RequestBody)替換restRequest.AddBody。 這沒有任何影響。
如果您嘗試在.NET應用程序中使用Azure DocumentDB,您可能會發現簡單地使用.NET SDK更容易。
假設你真的想讓REST API工作......簡單一瞥,我看到一些需要改變的事情:
1.)auth鍵關閉。
var primary_key = Environment.GetEnvironmentVariable("APPSETTING_documentDB_primary_key");
// ...
var data = "type=master&ver=1.0&sig=" + primary_key;
// ...
restRequest.AddHeader("Authorization", data);
您需要生成散列簽名,而不是傳入主密鑰。 您可以在此處找到有關auth的文檔。
2.)發送POST請求的URI看起來有點偏。
var baseUrl = Environment.GetEnvironmentVariable("APPSETTING_documentDB_endpoint");
// ...
result = newClient.UploadString(baseUrl, "POST", "{\"id\":\"test1\"}");
您需要根據您嘗試操作的資源構建URI。 例如,用於創建文檔的URI應如下所示:
https://{databaseaccount}.documents.azure.com/dbs/{_rid-db}/colls/{_rid-col}/docs
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.