21.httpclient

本文介绍如何使用Qt的QNetworkAccessManager类进行网络GET和POST请求。通过示例代码展示了如何设置请求头,发送JSON数据,并处理响应。适用于Qt开发人员学习网络编程。

 

 

#include <QCoreApplication>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QJsonObject>
#include <QJsonDocument>

int main(int argc, char* argv[])
{
    QCoreApplication app(argc, argv);

    QNetworkAccessManager* manager = new QNetworkAccessManager;

#if 0
    QNetworkRequest req;
    req.setUrl(QUrl("http://ds-project.cn"));
    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;
    });
#endif

#if 0
    QNetworkRequest req;
    req.setUrl(QUrl("http://127.0.0.1/cgi-bin/test.cgi"));
    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;
    });
#endif

    QJsonObject obj;
    obj.insert("username", QString("xueguoliang"));
    obj.insert("password", QString("xueguoliang's password"));

    QNetworkRequest req;
    req.setUrl(QUrl("http://127.0.0.1/cgi-bin/qt-test/qt-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();
}

 

2025-07-21T18:43:23.773+08:00 ERROR 53652 --- [rRegistryThread] c.xxl.job.core.util.XxlJobRemotingUtil : Connection refused: no further information java.net.ConnectException: Connection refused: no further information at java.base/sun.nio.ch.Net.pollConnect(Native Method) ~[na:na] at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672) ~[na:na] at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:547) ~[na:na] at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:602) ~[na:na] at java.base/java.net.Socket.connect(Socket.java:633) ~[na:na] at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:178) ~[na:na] at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:534) ~[na:na] at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:639) ~[na:na] at java.base/sun.net.www.http.HttpClient.<init>(HttpClient.java:282) ~[na:na] at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:387) ~[na:na] at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:409) ~[na:na] at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1308) ~[na:na] at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1241) ~[na:na] at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1127) ~[na:na] at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:1056) ~[na:na] at com.xxl.job.core.util.XxlJobRemotingUtil.postBody(XxlJobRemotingUtil.java:99) ~[xxl-job-core-2.4.0.jar:na] at com.xxl.job.core.biz.client.AdminBizClient.registry(AdminBizClient.java:42) ~[xxl-job-core-2.4.0.jar:na] at com.xxl.job.core.thread.ExecutorRegistryThread$1.run(ExecutorRegistryThread.java:48) ~[xxl-job-core-2.4.0.jar:na] at java.base/java.lang.Thread.run(Thread.java:842) ~[na:na] 2025-07-21T18:43:23.773+08:00 INFO 53652 --- [rRegistryThread] c.x.j.c.thread.ExecutorRegistryThread : >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='xxl-job-executor-sample', registryValue='http://192.168.190.1:9999/'}, registryResult:ReturnT [code=500, msg=xxl-job remoting error(Connection refused: no further information), for url : http://localhost:8080/xxl-job-admin/api/registry, content=null]
07-22
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunxiaopengsun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值