在使用HTTP和ubuntu中的通讯中发现,在ubuntu中,好像不能通过HTTP来创建数据库
create database mydb
使用这个会返回 Method Not Allowed

1.内容简介

本次使用InfluxDB主要的功能有

  1. 增加数据库的字段(wirte) 写入传感器
  2. 清除对应设备的series

DROP SERIES FROM "h2o_feet" WHERE "location" = 'santa_monica'
image.png

2.代码:

.h

  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3. #include <QMainWindow>
  4. #include "HttpClient.h"
  5. namespace Ui {
  6. class MainWindow;
  7. }
  8. class MainWindow : public QMainWindow
  9. {
  10. Q_OBJECT
  11. public:
  12. explicit MainWindow(QWidget *parent = 0);
  13. ~MainWindow();
  14. void writeInfluxDB();
  15. void deleteSeries();
  16. private:
  17. Ui::MainWindow *ui;
  18. AeaQt::HttpClient m_httpClient;
  19. };
  20. #endif // MAINWINDOW_H

.c文件

  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. #include <QJsonObject>
  4. #include <QString>
  5. MainWindow::MainWindow(QWidget *parent) :
  6. QMainWindow(parent),
  7. ui(new Ui::MainWindow)
  8. {
  9. ui->setupUi(this);
  10. // writeInfluxDB();
  11. deleteSeries();
  12. }
  13. MainWindow::~MainWindow()
  14. {
  15. delete ui;
  16. }
  17. //写入多个数据
  18. void MainWindow::writeInfluxDB()
  19. {
  20. QString mystring;
  21. mystring = "sensor,sensor_code=8888,sensor_type=ph value=7";
  22. mystring += "\n";
  23. mystring += "sensor,sensor_code=6666,sensor_type=orp value=100";
  24. mystring += "\n";
  25. m_httpClient.post("http://127.0.0.1:8086/write?db=mysensor")
  26. .header("content-type", "text/plain")
  27. .body(mystring.toLocal8Bit())
  28. .onResponse([=](QByteArray result){
  29. Q_UNUSED(result);
  30. qDebug() << "成功";
  31. })
  32. .onError([=](QString errorStr){
  33. qDebug() << errorStr;
  34. })
  35. .timeout(1000)
  36. .exec();
  37. }
  38. //删除series
  39. void MainWindow::deleteSeries()
  40. {
  41. QMap<QString, QVariant> test2;
  42. test2.insert("db", "mysensor");
  43. test2.insert("q", "delete from \"sensor\" where \"sensor_code\" = '3' ");
  44. m_httpClient.post("http://127.0.0.1:8086/query")
  45. .header("content-type", "multipart/form-data")
  46. .queryParams(test2)
  47. .onResponse([=](QByteArray result){
  48. Q_UNUSED(result);
  49. qDebug() << "成功";
  50. })
  51. .onError([=](QString errorStr){
  52. qDebug() << errorStr;
  53. })
  54. .timeout(1000)
  55. .exec();
  56. }

3.代码分析

笔者对POST请求的各种请求头不是很理解,但是也是成功的搞出来了。
下面进行简单分析:

3.1 写入多个数据

  1. //写入多个数据
  2. void MainWindow::writeInfluxDB()
  3. {
  4. QString mystring;
  5. mystring = "sensor,sensor_code=8888,sensor_type=ph value=7";
  6. mystring += "\n";
  7. mystring += "sensor,sensor_code=6666,sensor_type=orp value=100";
  8. mystring += "\n";
  9. m_httpClient.post("http://127.0.0.1:8086/write?db=mysensor")
  10. .header("content-type", "text/plain")
  11. .body(mystring.toLocal8Bit())
  12. .onResponse([=](QByteArray result){
  13. Q_UNUSED(result);
  14. qDebug() << "成功";
  15. })
  16. .onError([=](QString errorStr){
  17. qDebug() << errorStr;
  18. })
  19. .timeout(1000)
  20. .exec();
  21. }