【问题标题】:post data from c# to influxdb将数据从 c# 发布到 influxdb
【发布时间】:2015-10-13 23:40:11
【问题描述】:

我有下一个建议将数据发布到 InfluxDB:

curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu_load_short,host=server01,region=us-west value=0.64 1434055562000000000'

但我不知道如何在 c# 中做到这一点。

到目前为止,这是我的代码:

var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://192.168.0.102:8086/write?db=learning");
            httpWebRequest.ContentType = "*/*";
            httpWebRequest.Method = "POST";
            httpWebRequest.UseDefaultCredentials = false;
            httpWebRequest.Accept = "*/*";
            httpWebRequest.Credentials = new NetworkCredential("user", "pass");

            using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
            {
                string json = "AI1";
                streamWriter.Write(json);
                streamWriter.Flush();
                streamWriter.Close();
            }

【问题讨论】:

    标签: c# curl http-post influxdb


    【解决方案1】:

    我认为这对我不起作用。 这是我的完美解决方案

     WebClient client = new WebClient();           
     var reponse = client.UploadString("http://localhost:8086/write?db=mydb", "cpu_load_short,host=server01,region=us-west value=0.64 1434055562000000000");
    

    【讨论】:

      【解决方案2】:

      这是我如何决定的

      string data, Uri address
      try
          {
               var client = new HttpClient();
               var d = new StreamContent(GenerateStreamFromString(data));
               var response = await client.PostAsync(address, d);
               response.EnsureSuccessStatusCode();
          }
      catch
          {
               Console.WriteLine("Error in writing to DB");
          }
      
      public static Stream GenerateStreamFromString(string s)
      {
          MemoryStream stream = new MemoryStream();
          StreamWriter writer = new StreamWriter(stream);
          writer.Write(s);
          writer.Flush();
          stream.Position = 0;
          return stream;
      }
      

      【讨论】:

        【解决方案3】:

        我会这样做使用System.Net.Http.HttpClient,或者更好的是使用InfluxDB.NET

            static async Task InfluxPostAsync()
            {
                var influxPostData = "influxdbname,tag1=tag1value value=1000";
        
                using (var client = new System.Net.Http.HttpClient())
                {
                    client.BaseAddress = new Uri("http://influxserver:8086");
                    client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", "aW5mblahblahblahblahblahNXMyNQ==");
                    var content = new System.Net.Http.StringContent(influxPostData, Encoding.UTF8, "application/json");
                    var result = await client.PostAsync("/write?db=influxdbname&precision=s", content);
                    string resultContent = await result.Content.ReadAsStringAsync();
                }
            }
        
            static void Main(string[] args)
            {
                Task.Run(() => InfluxPostAsync());
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-02-08
          • 1970-01-01
          • 2018-01-18
          • 2019-10-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多