新建项目T12HttpClient
T12HttpClient.pro
SOURCES+=\
main.cpp
QT+=network
CONFIG+=C++11
main.cpp
#include <QCoreApplication>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
int main(int argc,char* argv[])
{
QCoreApplication app(argc, argv);
QNetworkAccessManager* manager = new QNetworkAccessManager;
QNetworkRequest req;
//这里,我访问的是tomcat服务器
req.setUrl(QUrl("http://localhost:8080/"));
manager->get(req);
QObject::connect(manager, &QNetworkAccessManager::finished, [](QNetworkReply* reply){
if(reply->error() != QNetworkReply::NoError)
{
qDebug() << "Error:" << reply->errorString();
return;
}
QByteArray buf = reply->readAll();
qDebug() << "OK:"<< buf;
});
return app.exec();
}
运行结果:
Json数据传输
#include <QCoreApplication>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QJsonObject>
#include <QJsonDocument>
/**
* json 数据传输
* @brief main
* @param argc
* @param argv
* @return
*/
int main(int argc,char* argv[])
{
QCoreApplication app(argc, argv);
QNetworkAccessManager* manager = new QNetworkAccessManager;
QJsonObject obj;
obj.insert("username", QString("tuzuoquan"));
obj.insert("password", QString("tuzuoquan's password"));
QNetworkRequest req;
req.setUrl(QUrl("http://XXX/test.cgi"));
manager->post(req, QJsonDocument(obj).toJson());
QObject::connect(manager, &QNetworkAccessManager::finished, [](QNetworkReply* reply){
if(reply->error() != QNetworkReply::NoError)
{
qDebug() << "Error:" << reply->errorString();
return;
}
QByteArray buf = reply->readAll();
qDebug() << "OK:"<< buf;
});
return app.exec();
}
关于cgi的代码
#include <stdio.h>
#include <unistd.h>
#include <QCoreApplication>
#include <QTcpSocket>
#include <QJsonDocument>
#include <QJsonObject>
#include <QProcessEnvironment>
int main(int argc, char* argv[])
{
printf("Content-type:text/html\n\n");
QCoreApplication app(argc, argv);
QProcessEnvironment envir =
QProcessEnvironment::systemEnvironment();
int contentLen = envir.value("CONTENT_LENGTH").toInt();
QTcpSocket socket;
socket.setSocketDescriptor(STDIN_FILENO,
QTcpSocket::ConnectedState,
QTcpSocket::ReadOnly);
QByteArray buf;
QObject::connect(&socket, &QTcpSocket::readyRead, [&](){
buf += socket.readAll();
if(buf.size() == contentLen)
{
QJsonDocument doc = QJsonDocument::fromJson(buf);
QJsonObject obj = doc.object();
#if 1
QString username = obj.value("username").toString();
QString password = obj.value("password").toString();
printf("username is %s; password is %s",
username.toUtf8().data(), password.toUtf8().data());
#else
QSqlTableModel model;
model.setTable("tuser");
model.setFilter("username='xx'");
model.select();
if(model.rowCount() == 1)
printf("Login success");
else
printf("Login Error");
#endif
app.quit();
}
});
return app.exec();
}
上面的程序代码说明,我们可以通过post的方式顺便发送Json数据给服务器!
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow