在使用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_OBJECT
public:
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();
}
//删除series
void 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();
}