Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Youtube API搜索返回“;";Qt C+错误+; 我用QT使用C++,我想通过YouTube API找到YouTube视频搜索的关键字。我已经有了API密钥。_C++_Qt_Get_Youtube Api_Youtube Data Api - Fatal编程技术网

Youtube API搜索返回“;";Qt C+错误+; 我用QT使用C++,我想通过YouTube API找到YouTube视频搜索的关键字。我已经有了API密钥。

Youtube API搜索返回“;";Qt C+错误+; 我用QT使用C++,我想通过YouTube API找到YouTube视频搜索的关键字。我已经有了API密钥。,c++,qt,get,youtube-api,youtube-data-api,C++,Qt,Get,Youtube Api,Youtube Data Api,我的代码是: void Youtube::searchVideos(QString keyword) { int maxResults = 5; //the maximum of search results we want shown QString youtubeurl = "https://www.googleapis.com/youtube/v3/search?part=snippet&type=video&q=" +

我的代码是:

void Youtube::searchVideos(QString keyword)
{

        int maxResults = 5; //the maximum of search results we want shown

        QString youtubeurl = "https://www.googleapis.com/youtube/v3/search?part=snippet&type=video&q=" +
            keyword +
            "%203%27%203&key=" + QString(YOUTUBE_API_KEY) +
            "&videoEmbeddable=true" +
            "&maxResults=" + QString::number(maxResults);

        QEventLoop loop;

        QUrl url(youtubeurl);

        if (_netManager == NULL)
        {
            _netManager = new QNetworkAccessManager(this);
            QObject::connect(_netManager, SIGNAL(finished(QNetworkReply *)), this, SLOT(processReply(QNetworkReply *)));
        }

        QNetworkRequest request(url);

        _reply = _netManager->get(request);

}

void Youtube::processReply(QNetworkReply * pReply)
{
    QVariant statusCodeV = pReply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
    QVariant redirectionTargetUrl = pReply->attribute(QNetworkRequest::RedirectionTargetAttribute);

    QJsonObject results;

    if (pReply->error() == QNetworkReply::NoError)
    {

        QByteArray message = pReply->readAll();

        QString str = QString::fromUtf8(message.data(), message.size());
        int statusCode = pReply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();

        qDebug() << QVariant(statusCode).toString();

        QJsonDocument jsonResponse = QJsonDocument::fromJson(message);
        results = jsonResponse.object();
        qDebug() << "Youtube API works.";

    }

    else
    {
        qDebug() << "Error searching on Youtube : " << QString(pReply->error()).toUtf8();

    }
}
void Youtube::searchVideos(QString关键字)
{
int maxResults=5;//我们希望显示的最大搜索结果数
QString youtubeurl=”https://www.googleapis.com/youtube/v3/search?part=snippet&type=video&q=" +
关键词+
%203%27%203&key=“+QString(YOUTUBE\u API\u密钥)+
“&VideoEmbeddeble=true”+
“&maxResults=“+QString::number(maxResults);
QEventLoop循环;
QUrl url(youtubeurl);
如果(_netManager==NULL)
{
_netManager=新的QNetworkAccessManager(此);
QObject::connect(_netManager,信号(完成(QNetworkReply*)),此,插槽(processReply(QNetworkReply*));
}
QNetworkRequest请求(url);
_回复=_netManager->get(请求);
}
void Youtube::processReply(QNetworkReply*pReply)
{
QVariant statusCodeV=pReply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
QVariant redirectionTargetUrl=pReply->attribute(QNetworkRequest::RedirectionTargetAttribute);
QJsonObject结果;
如果(准备->错误()==QNetworkReply::NoError)
{
QByteArray message=pReply->readAll();
QString str=QString::fromUtf8(message.data(),message.size());
int statusCode=pReply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();

qDebug()将“注释调试”的结果总结为一个简短、清晰的答案:

  • 要打印错误,请使用
    pReply->errorString()
    ,不要将错误代码(整数)转换为字符串
  • 这里真正的错误是在未安装openssl的情况下使用
    https

解决方案:安装openssl 1.0.*(Qt 5.9不支持1.1.*)。对于windows,可以在此处下载:

关键字的内容是什么?
?完整URL是什么?关键字是一个字符串,表示我们在Youtube上搜索的内容,如“音乐”或“有趣的视频”完整的URL看起来是这样的:我不能显示API密钥,使得链接不能工作。在<代码>关键字< /代码>中的查询看起来没有URL编码。也许,如果你尝试这样做,实际上,QNETWorkRebug的错误是一个枚举,所以你应该在ASCII中考虑“C”为99,而从文档99中读取的是QNETWorkRe::UnknownNetworkError说明:发生未知的网络相关错误detected@Felix我安装了openssl 1.0.2,它不再返回错误。谢谢!