以下是用射手网api写的请求字幕
数据的一些代码,为什么总是不成功?获取文件hash部分是正确的,我拦截别人写的字幕批量
下载时,它post出去的数据也是一样的啊,为什么我的
没有结果?是不是这样post方式不正确?
- #include "widget.h"
- #include "ui_widget.h"
- #include <QFile>
- #include <QFileInfo>
- #include <QCryptographicHash>
- #include <QNetworkAccessManager>
- #include <QNetworkReply>
- #include <QNetworkRequest>
- #include <QEventLoop>
- #include <QSslConfiguration>
- #include <QSsl>
- #include <QDebug>
- Widget::Widget(QWidget *parent) :
- QWidget(parent),
- ui(new Ui::Widget)
- {
- ui->setupUi(this);
- getLocalFileSub("F:/Space.Station.76.2014.720p.HDRip.x264.AC3.5.1-RARBG.mkv");
- }
- Widget::~Widget()
- {
- delete ui;
- }
- void Widget::getLocalFileSub(QString filePath)
- {
- QNetworkAccessManager *manager = new QNetworkAccessManager;
- QString fileHash = computerLocalFileHash(filePath);
- QNetworkRequest request(QUrl("http://www.shooter.cn/api/subapi.php"));
- QByteArray postData;
- postData.append(QString("filehash=%0&pathinfo=%1&format=json").arg(QString(fileHash.toUtf8().toPercentEncoding())).arg(QString(filePath.toUtf8().toPercentEncoding())));
- request.setHeader(QNetworkRequest::ContentTypeHeader,"multipart/form-data");
- request.setHeader(QNetworkRequest::UserAgentHeader,"SPlayer Build 580");
- QNetworkReply *reply = manager->post(request,postData);
- QEventLoop loop;
- QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
- loop.exec();
- QByteArray data = reply->readAll();//
- qDebug()<<postData<<data;
- }
- QString Widget::computerLocalFileHash(QString filePath)
- {
- QStringList fileHashList;
- QFile file(filePath);
- file.open(QFile::ReadOnly);
- QFileInfo fileInfo(file);
- qint64 ftotallen = fileInfo.size();
- qint64 offset[4];
- offset[3] = ftotallen - 8192;
- offset[2] = ftotallen / 3;
- offset[1] = ftotallen / 3 * 2;
- offset[0] = 4096;
- file.seek(offset[0]);
- QByteArray data0 = file.read(4096);
- QByteArray md5_0 = QCryptographicHash::hash(data0,QCryptographicHash::Md5).toHex();
- fileHashList.append(md5_0);
- file.seek(offset[1]);
- QByteArray data1 = file.read(4096);
- QByteArray md5_1 = QCryptographicHash::hash(data1,QCryptographicHash::Md5).toHex();
- fileHashList.append(md5_1);
- file.seek(offset[2]);
- QByteArray data2 = file.read(4096);
- QByteArray md5_2 = QCryptographicHash::hash(data2,QCryptographicHash::Md5).toHex();
- fileHashList.append(md5_2);
- file.seek(offset[3]);
- QByteArray data3 = file.read(4096);
- QByteArray md5_3 = QCryptographicHash::hash(data3,QCryptographicHash::Md5).toHex();
- fileHashList.append(md5_3);
- return fileHashList.join(";");
- }
以下是射手网给的API说明:
两个html文件:
http://pan.baidu.com/s/1o6G6eNK ,google被封,我下载来的。