5.QT中关于HTTPClient相关的操作,Json数据传输
2014-12-16 20:47
302 查看
新建项目T12HttpClient
T12HttpClient.pro
SOURCES
+=
\
main.cpp
QT
+=
network
CONFIG
+=
C++11
main.cpp
运行结果:
Json数据传输
关于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数据给服务器!
新建项目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数据给服务器!
相关文章推荐
- 5.QT中关于HTTPClient相关的操作,Json数据传输
- HttpClient request payload post请求(传输的数据为json)
- java_HttpClient使用HttpGet进行json数据传输
- 关于Android使用HttpURLConnection传输含有中文JSON数据的报错、乱码问题
- HttpClient使用HttpGet进行json数据传输
- php 关于解析json数据的相关操作
- HttpClient获取并解析JSON数据
- Android 客户端通过内置API(HttpClient) 访问 服务器(用Spring MVC 架构) 返回的json数据全过程
- HttpClient获取并解析JSON数据
- android通过httpClient请求获取JSON数据并且解析
- android通过httpClient请求获取JSON数据并且解析
- 关于http接口开发中json格式数据编码问题处理
- Flex与.NET互操作(四):使用HttpService、URLReqeust和URLLoader加载/传输数据 推荐
- Flex与.NET互操作(四):使用HttpService、URLReqeust和URLLoader加载/传输数据
- HttpURLConnection和HttpClient获取Json数据
- 关于JSON排序的相关操作
- 使用xml/json格式传输数据 spring mvc(HttpMessageConverter<T>的使用)
- 【转】Flex4:利用HttpService与ASP.NET传输JSON数据(登录为例)
- 关于http接口开发中json格式数据编码问题处理
- Flex4:利用HttpService与ASP.NET传输JSON数据(登录为例)