c++ - 适用于 iOS 和 Android 的 QT C++ 中的 HTTPS 请求

标签 c++ ios qt ssl twitter

我一直在努力寻找一种方法将 twitter 集成到我的跨平台 qt 项目中。 我想要实现的目标并不奇怪。我只是希望能够使用 Twitter API 使用仅应用凭据获取带有特定主题标签的一些推文。 为此,我必须使用他们的 oauth2 身份验证过程获取不记名 token 。根据他们的开发页面,SSL 是必需的。 https://dev.twitter.com/oauth/application-only

我在 QT 中读到过,我可以使用 QNetworkAccessManager 发送 QNetworkRequests,但我似乎无法让它工作。我得到一个错误:“协议(protocol)\”\“未知”

我已经尝试准备了很多帖子,但我无法得到我想要的。我将不胜感激我能得到的所有帮助,使这成为可能。如果有人能指出我正确的方向/教程,请这样做:

附上我的示例代码:

.pro

QT += qml quick network

设置代码:

m_networkManager = new QNetworkAccessManager(this);
connect(m_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(requestFinished(QNetworkReply*)));

请求码:

QJsonObject params;
params.insert("grant_type","client_credentials");

QUrl url("https://api.twitter.com/oauth2/token");
url.setHost("api.twitter.com");

QNetworkRequest request;
QString authorizationKey =  m_consumerKey + ":" + m_consumerSecret;
request.setRawHeader("Authorization", "Basic "+ authorizationKey.toUtf8().toBase64());
request.setRawHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
m_networkManager->post(request, QJsonDocument(params).toJson());

最后是我的回调:

void NetworkClass::requestFinished(QNetworkReply *reply)
{
    cout << "header size: " + reply->readBufferSize();
    if (reply->error() == QNetworkReply::NoError) {
        //success
        QByteArray response_data = reply->readAll();
        QJsonDocument json = QJsonDocument::fromJson(response_data);
        cout <<"result: " << response_data.toStdString();
    }
    else {
        //failure
        qDebug() << "Failure" <<reply->errorString();
    }
    reply->deleteLater();
}

注意:我不太擅长 SSL 等。我对此还是个新手。也许这就是为什么我现在感到如​​此失落。请帮助我。谢谢。

更新
@dutt 指出我忘记将 url 设置为请求。耶!最后我收到了回复。然而,我得到了这样的回复:
“传输错误 https://api.twitter.com/oauth2/token - 服务器回复:禁止访问”

最佳答案

关于c++ - 适用于 iOS 和 Android 的 QT C++ 中的 HTTPS 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42779927/

相关文章:

c - Qt C 错误重复符号 _function_names in juicy_lucy.o 和 main.o for architectures x86_64

c++ - 无限循环的 "for(;;)"习语是否正确归因于 PDP-11 C 编译器?

c++ - MEX 文件如何为 C++ 程序提供参数?

ios - Storyboard View 调整大小问题

objective-c - 使用 LLVM 生成 ObjC 代码

qt - QTreeview 中唯一父节点的子节点的多重选择?

C++ Qt程序设计问题

c++ - 你如何打包一个 Visual Studio C++ 项目来发布?

c++ - std::find 的优点

ios - 用来自服务器的数据填充 UIPageViewController?