Qt实践| HTTP知识点-接入某图片验证码系统查询余额

580 篇文章 121 订阅
39 篇文章 0 订阅

目录

 

 

基本概念

代码与实例


 

基本概念

这个是接入了某识别验证码系统,这个验证码系统有很多的接口,其中就有VC++接口,但个人觉得,这个接口不太好,因为本人想用C++ Qt框架实现,而这个Qt框架的最大特点就是跨平台,所以本人选择了他的HTTP接口,正巧,自己也在学习HTTP。

HTTP的接口使用很频繁,在RabbitMQ中,本人也看到了HTTP接口,写客户端的时候可以直接根据HTTP接口和RabbitMQ进行通信。再后面的博文中将会给出。

下面来看下某打码系统关于余额查询的API文档:

他的返回值如下:

sign计算如下:

 

代码与实例

这里首先来看看我WEB上的余额:

这里来看看发包和回包:

个人觉得这个sign就是防止数据包被篡改而增加的MD5校验

程序运行截图如下:

源码如下:

#include <QCoreApplication>
#include <QDebug>
#include <QNetworkReply>
#include <QNetworkAccessManager>
#include <QDateTime>
#include <QNetworkRequest>
#include <QCryptographicHash>
#include <QString>
#include <QObject>
#include <QHttpPart>
#include <QHttpMultiPart>
#include <QJsonDocument>
#include <QMap>
#include <QEventLoop>
#include <QUrl>

const QString userPID = "";            //去系统里面查
const QString PDKey = "";              //去系统里面查

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

    QNetworkAccessManager *manager = new QNetworkAccessManager;
    QNetworkRequest *request = new QNetworkRequest;

    QString requestStr = "http://pred.fateadm.com/api/custval";
    request->setRawHeader("Content-Type", "application/x-www-form-urlencoded");
    request->setUrl(requestStr);

    //parameter
    uint currentTime = QDateTime::currentDateTime().toTime_t();
    QCryptographicHash md51(QCryptographicHash::Md5);
    QCryptographicHash md52(QCryptographicHash::Md5);
    QString md51Str = QString::number(currentTime) + PDKey;
    md51.addData(md51Str.toUtf8());
    QString md52Str = userPID + QString::number(currentTime) + QString(md51.result().toHex());
    md52.addData(md52Str.toUtf8());
    QString body = QString("user_id=%1&timestamp=%2&sign=%3").arg(116107).arg(currentTime).arg(QString(md52.result().toHex()));

    QNetworkReply *reply = manager->post(*request, body.toUtf8());

    QEventLoop loop;
    QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
    loop.exec();

    qDebug() << "The result is : ";
    QMap<QString, QVariant> map = QJsonDocument().fromJson(reply->readAll()).toVariant().toMap();
    qDebug() << map;

    delete manager;
    delete request;

    qDebug() << "finished!";

    return a.exec();
}

 

  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

IT1995

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

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

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

打赏作者

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

抵扣说明:

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

余额充值