0

我正在使用 C# 连接到 IBM Cloudant。IBM Cloudant 支持 JSON 查询IBM Cloudant,提到我需要使用 POST 请求来创建查询,但没有解释,我使用的是具有PostAsync方法的 HttpClient。有谁知道如何使用此方法创建查询,例如以下查询:

{
   "selector": {
      "_id": {
         "$gt": null
      }
   }
}
4

3 回答 3

0

我对此也有一些困惑。请参考下文。

var client = new HttpClient();

var content = new StringContent("JSON Content");
content.Headers.Add("header-name", "header value");

client.PostAsync("http://example.com/something", content);

您的 JSON 内容也可以是 C# 对象,您可以使用Newtonsoft.Json之类的东西对其进行 JSON 序列化

于 2019-07-15T11:57:21.270 回答
0

所以我终于设法检索到查询的响应,如下所示: var jsonString = "{\"selector\": {\"_id\": {\"$gt\": null}},\"fields\": [\"" + Attribute + "\"],\"sort\": [{\"_id\": \"asc\"}]}"; var content = new StringContent(jsonString, Encoding.UTF8, "application/json"); HttpResponseMessage res = await Client.PostAsync(string.Format("https://{0}.cloudant.com/{1}/_find", User, Database), content); StreamReader streamReader = new StreamReader(await res.Content.ReadAsStreamAsync()); JObject responseContent = (JObject)JToken.ReadFrom(new JsonTextReader(streamReader)); streamReader.Close(); var Elements =responseContent["docs"].Value<JArray>();

于 2019-07-16T11:28:51.207 回答
0

你也可以试试这个版本,你的查询类

public class Id{
    public object gt { get; set; }
}

public class Selector{
    public Id _id { get; set; }
}

public class RootObject{
    public Selector selector { get; set; }
}

序列化 tmpObject 和 PostAsync:


client.PostAsync(url, new StringContent(tmpObject.ToString(), Encoding.UTF8, "application/json"));

于 2019-07-15T12:04:12.900 回答