在使用HTTP和ubuntu中的通讯中发现,在ubuntu中,好像不能通过HTTP来创建数据库create database mydb
使用这个会返回 Method Not Allowed
1.内容简介
本次使用InfluxDB主要的功能有
- 增加数据库的字段(wirte) 写入传感器
- 清除对应设备的series
DROP SERIES FROM "h2o_feet" WHERE "location" = 'santa_monica'
2.代码:
.h
#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include "HttpClient.h"namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();void writeInfluxDB();void deleteSeries();private:Ui::MainWindow *ui;AeaQt::HttpClient m_httpClient;};#endif // MAINWINDOW_H
.c文件
#include "mainwindow.h"#include "ui_mainwindow.h"#include <QJsonObject>#include <QString>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){ui->setupUi(this);// writeInfluxDB();deleteSeries();}MainWindow::~MainWindow(){delete ui;}//写入多个数据void MainWindow::writeInfluxDB(){QString mystring;mystring = "sensor,sensor_code=8888,sensor_type=ph value=7";mystring += "\n";mystring += "sensor,sensor_code=6666,sensor_type=orp value=100";mystring += "\n";m_httpClient.post("http://127.0.0.1:8086/write?db=mysensor").header("content-type", "text/plain").body(mystring.toLocal8Bit()).onResponse([=](QByteArray result){Q_UNUSED(result);qDebug() << "成功";}).onError([=](QString errorStr){qDebug() << errorStr;}).timeout(1000).exec();}//删除seriesvoid MainWindow::deleteSeries(){QMap<QString, QVariant> test2;test2.insert("db", "mysensor");test2.insert("q", "delete from \"sensor\" where \"sensor_code\" = '3' ");m_httpClient.post("http://127.0.0.1:8086/query").header("content-type", "multipart/form-data").queryParams(test2).onResponse([=](QByteArray result){Q_UNUSED(result);qDebug() << "成功";}).onError([=](QString errorStr){qDebug() << errorStr;}).timeout(1000).exec();}
3.代码分析
笔者对POST请求的各种请求头不是很理解,但是也是成功的搞出来了。
下面进行简单分析:
3.1 写入多个数据
//写入多个数据void MainWindow::writeInfluxDB(){QString mystring;mystring = "sensor,sensor_code=8888,sensor_type=ph value=7";mystring += "\n";mystring += "sensor,sensor_code=6666,sensor_type=orp value=100";mystring += "\n";m_httpClient.post("http://127.0.0.1:8086/write?db=mysensor").header("content-type", "text/plain").body(mystring.toLocal8Bit()).onResponse([=](QByteArray result){Q_UNUSED(result);qDebug() << "成功";}).onError([=](QString errorStr){qDebug() << errorStr;}).timeout(1000).exec();}
