首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >QtCUrl post不再工作(Linux nok...windows ok)

QtCUrl post不再工作(Linux nok...windows ok)
EN

Stack Overflow用户
提问于 2019-07-29 21:22:45
回答 1查看 82关注 0票数 0

自去年以来,我一直在我的程序中运行这个函数(Linux和Windows)。

现在我需要实现一个新函数,而我的新构建不再运行。

我还有其他使用POST的CUrl函数,结果都是一样的: nok,但我的GET函数是ok的。

我有另一台计算机(安装了Mint19),该程序运行得很流畅,但在我的计算机(也使用Mint19)上,编译是正常的,但它启动了curl.exec (我使用的是Qtcurl库,inside调用了curl_easy_perform),并且不再返回。

我安装了这个包: libcurl4-openssl-dev

可以编译我的程序(Linux和Windows)。此程序在Windows上运行。

我的问题是Mint19中的新版本。

安装时缺少什么?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
QUrl url("https://pos-api.ifood.com.br/oauth/token");
QUrlQuery q;
q.addQueryItem("client_id", id); 
q.addQueryItem("client_secret", secret); 
q.addQueryItem("grant_type","password"); 
q.addQueryItem("username",user); 
q.addQueryItem("password",password); 

url.setQuery(q);

QtCUrl::Options opt;
opt[CURLOPT_URL] = url;
opt[CURLOPT_POST] = true;
opt[CURLOPT_FOLLOWLOCATION] = true;
opt[CURLOPT_FAILONERROR] = true;


opt[CURLOPT_SSL_VERIFYPEER]= false;  // windows

QStringList headers;
headers
    << "cache-control: no-cache"
    << "content-type: application/x-www-form-urlencoded";
opt[CURLOPT_HTTPHEADER] = headers;
val = cUrl.exec(opt);  // PROBLEM HERE!!!!

if (cUrl.lastError().isOk()) {

    bool ok;
    // json is a QString containing the JSON data
    QtJson::JsonObject result = QtJson::parse(val, ok).toMap();
    token=result["access_token"].toString();


    return token;
}
else {
    return "";
}
EN

回答 1

Stack Overflow用户

发布于 2019-08-01 14:21:25

我改变了我所有的方法。

第一个函数是带有查询的POST。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    QString iFood_getToken2(QString token, int *expira, QString id, QString secret, QString user, QString password, QString host){
    if(host!=hostname || !ifood_ativo){
        qDebug() << "iFood_getToken2 saindo...";
        return "";
    }

    if(*expira>IFOOD_TASK){
        *expira-=IFOOD_TASK;
       // qDebug() << "expira " << *expira;
        return token;   // token válido
    }

    QUrl url("https://pos-api.ifood.com.br/oauth/token");

    QUrlQuery q;
    q.addQueryItem("client_id", id); 
    q.addQueryItem("client_secret", secret); 
    q.addQueryItem("grant_type","password"); 
    q.addQueryItem("username",user); 
    q.addQueryItem("password",password); 
    url.setQuery(q);

    QNetworkRequest request(url);
    request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
    request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QVariant(int(QNetworkRequest::AlwaysNetwork)));

    QJsonObject json;

    QNetworkAccessManager nam;

    QNetworkReply *reply = nam.post(request, QJsonDocument(json).toJson());

    while (!reply->isFinished())
    {
        qApp->processEvents();
    }

    QByteArray response_data = reply->readAll();
    QJsonDocument jsonr = QJsonDocument::fromJson(response_data);
    reply->deleteLater();

    //qDebug() << "ifoodtoken2 " << jsonr["access_token"].toString();

    return jsonr["access_token"].toString();
}

我实现了这些新函数:

GET和补丁有一个新的实现

所以,从现在开始,我不再需要使用CUrl库了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
QJsonDocument networkGet(QString strUrl, QString token){
    QUrl url(strUrl);

    QNetworkRequest request(url);
    request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QVariant(int(QNetworkRequest::AlwaysNetwork)));

    QString headerData = "bearer " + token;
    request.setRawHeader("Authorization", headerData.toLocal8Bit());

    QJsonObject json;

    QNetworkAccessManager nam;

    QNetworkReply *reply = nam.get(request);

    while (!reply->isFinished())
    {
        qApp->processEvents();
    }

    QByteArray response_data = reply->readAll();
    QJsonDocument json_response = QJsonDocument::fromJson(response_data);
    reply->deleteLater();

    //qDebug() << "networkGet " << json_response << reply->errorString() << headerData ;

    return json_response;

}

int networkPatch(QString strUrl, QString token, QJsonDocument json){
    QUrl url(strUrl);

    QNetworkRequest request(url);
    request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QVariant(int(QNetworkRequest::AlwaysNetwork)));
    request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");

    QString headerData = "bearer " + token;
    request.setRawHeader("Authorization", headerData.toLocal8Bit());

    QNetworkAccessManager nam;

    QByteArray * _b_arr = new QByteArray (QString(json.toJson()).toLatin1());
    QBuffer *_qbf_upload =new QBuffer (_b_arr);
    QNetworkReply *reply = nam.sendCustomRequest(request,"PATCH",_qbf_upload);

    while (!reply->isFinished())
    {
        qApp->processEvents();
    }

    QByteArray response_data = reply->readAll();
    QJsonDocument json_response = QJsonDocument::fromJson(response_data);
    reply->deleteLater();

    qDebug() << "networkPatch " << reply->error() << json_response << reply->errorString() << headerData ;

    return reply->error();

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57261587

复制
相关文章
用于数学的 10 个优秀编程语言
作为一个对数学和编程语言充满激情的人,谁也不能阻止我分享我总结的10个超棒的用于数学的编程语言。 正文共:2619 字 预计阅读时间:7 分钟 作为一个对数学和编程语言充满激情的人,谁也不能阻止我分
前朝楚水
2018/04/03
3.4K0
用于数学的 10 个优秀编程语言
修改leanote的字体大小
leanote-desktop-windows-x64-v2.4\resources\app\public\themes\default.css
超级大猪
2019/11/22
2K0
用于AI开发的5种最佳编程语言
你是一个对你下一个项目选择编程语言困惑的AI(人工智能)追求者吗?如果是这样,那么你来对地方了,因为在这里我们将看到AI开发最好的5种编程语言。
老人雨何
2018/01/29
3.4K0
MyEclipse的字体大小设置(附图)
选择General → Appearance → Colors and Fonts → Basic → Text Font
是阿超
2021/10/15
1.6K0
Thrift辅助类,用于简化Thrift编程
CThriftServerHelper用于服务端,CThriftClientHelper用于客户端。 源代码链接:https://github.com/eyjian/mooon/blob/master/mooon/include/mooon/net/thrift_helper.h IDL定义: service PackageManagerService { } 服务端使用示例: CThriftServerHelper _thrift_server_helper; return _thrift_server_helper.serve(FLAGS_package_port, rpc_threads); 客户端使用示例: CThriftClientHelper thrift_client_helper(FLAGS_package_ip, FLAGS_package_port); thrift_client_helper.connect(); // 注意需要处理异常TTransportException/TApplicationException/TException
一见
2018/08/10
1.9K0
用于人工代码生成的AI研究环境(元编程)
https://github.com/gsurma/meta_intelligence
代码医生工作室
2019/06/21
4870
用于人工代码生成的AI研究环境(元编程)
用于日常编程问题的 10 个 Python 代码片段
Python 已成为最受欢迎的编程语言之一,由于其灵活性、用户友好性和广泛的库。无论您是初学者还是有准备的开发人员,拥有一组方便的代码部分都可以为您节省大量时间和精力。在本文中,我们将深入研究十个可用于解决日常编程挑战的 Python 代码片段。我们将指导您完成每个片段,以简单的步骤阐明其运作方式。
很酷的站长
2023/08/11
3020
用于日常编程问题的 10 个 Python 代码片段
pycharm字体大小设置[通俗易懂]
今天刚装了pycharm,字体太小了,网上查了下,get大小设置:File->settings -> editor -> colors & fonts中设置,但是显示是灰色的,不能修改,再查资料,get:修改上面Scheme name,然后另存Sava As,随便一个名字,即可,然后即可修改字体大小。。。
全栈程序员站长
2022/09/25
4K0
pycharm字体大小设置[通俗易懂]
vscode设置字体大小和字体(vscode窗口字体大小设置)
第一步:首先打开vscode,在vscode的左下角有一个设置按钮,单机打开,选择settings选项
全栈程序员站长
2022/08/02
23.8K0
vscode设置字体大小和字体(vscode窗口字体大小设置)
PHPstorm设置字体大小
PhpStorm 是 JetBrains 公司开发的一款商业的 PHP 集成开发工具,旨在提高用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查。 它的功能有很多,在这里我只介绍智能PHP编辑器的功能; 功能如下: ● PHP代码补全。 ● 智能的重复编码检测器。 ● PHP重构。 ● 支持Smarty和PHPDoc。 ● 支持多语言混合。 一款优秀的代码编辑器可以提高程序员用户的工作效率,快速方便得进行大型编程。那么对于初次使用phpstorm的新手来说,可能还不太清楚phpstorm的基础设置,比如字体大小及样式。不论是在工作中还是学习中,安装完初次打开,字体都看着很不舒服,大家也都知道变换字体的大小是在文件中,但是那都是英文,有许多我们不认识的,这就加大了难度,有人会说把这个PhpStorm 软件给汉化一下,其实我认为没必要去汉化,汉化后的PhpStorm软件很多功能无法实现,很多快捷键和设置和一些功能都打不开,所以还是乖乖使用英文版的吧。 下面我们就给大家介绍如何设置修改phpstorm中的字体大小及样式。 一、设置代码编辑区域的字体(字体大小、样式) 首先我们找到File并打开设置settings选项,如图所示:(打开后是这样的)
超级小可爱
2023/02/20
3.8K0
独家 | ​PyMC3 介绍:用于概率编程的Python包
我们经常从天气预报中听到:明天的降水率是80%。这意味着什么?我们很难直白地解释这种说法,尤其是从概率学派的角度:无限次(或非多次)地重复下雨/不下雨实验是不现实的。
数据派THU
2021/01/28
1.6K0
独家 | ​PyMC3 介绍:用于概率编程的Python包
Pycharm 字体大小及背景颜色的设置
选择File –> setting –> Editor –> Font,我们可以看到如下图所示界面,我们就可以根据自己的喜好随意调整字体的大小,字体的样式风格,文字行间距,设置之后的的效果在下面的窗口可以实时预览,调整和设置都比较方便。
全栈程序员站长
2022/09/26
2.9K0
Pycharm 字体大小及背景颜色的设置
Intellij IDEA 设置字体大小
File—>settings(ctrl+Alt+s)—>Editor—>Font—>size 设置字体大小—>Apply—>ok 即可
全栈程序员站长
2022/07/01
11.1K0
Intellij IDEA 设置字体大小
WebStorm如何设置字体大小
由于最近要练习一些js代码,特地装了WebStorm,但是发现字体太小,因此将已知的两种方法整理出来。
全栈程序员站长
2022/07/01
5K0
WebStorm如何设置字体大小
phpstorm怎么调字体大小
PHPstORM中调字体大小的方法:1、打开phpstorm;2、点击“File”菜单栏并选择“setting”设置选项;3、在设置中点击左侧“Editor”展开子菜单并选择“Font”;4、在Font对话框中的“Site”一栏里根据你需要调整字体的大小来设置对应的数值即可。
超级小可爱
2023/02/23
3.4K0
joplin调整markdown展示字体大小
joplin怎么调整字体大小呢?我相信比较少有人听过joplin,joplin是一个小众的笔记软件(https://joplinapp.org/)。但小编已经用了很久了。joplin的字体有时有点小,那么joplin怎么调整字体大小呢,下面就让小编带大家一起了解吧。 joplin在设置界面没有看到调整markdown字体的选项,那joplin怎么调整字体大小呢?原来调整字体大小只需要改它,下面一起看小编的操作吧。 joplin改markdown字体大小,只需要在外观-编辑 custom stylesheet 的 css。
超级大猪
2020/07/03
6.5K1
前端:CSS字体大小 px、em、rem的区别
1px的长度表示显示器中一个像素(pixel)的长度,实际显示的效果和显示器的 DPI(Dot Per Inch,每英寸像素数)有关,DPI越大每英寸的像素数越多,每个像素的实际大小越小。通常来说分辨率越高的屏幕 DPI也就越高,所以高分辨率屏幕显示的图标和字体都要更小一些。
渔父歌
2020/03/26
2.2K0
IntelliJ IDEA 如何设置黑色主题,界面字体大小以及内容字体大小
设置步骤:1、打开软件,在菜单栏中找到File,点击File,选择settings
全栈程序员站长
2022/09/14
3.2K0
IntelliJ IDEA 如何设置黑色主题,界面字体大小以及内容字体大小
笔记11 | 动态设置TextView的字体大小
地址 CSDN地址:http://blog.csdn.net/xiangyong_1521/article/details/78137394 当需要动态更改的TextView的内容字体的大小,比如设定的TextView的只有一行,宽度只有200dp,内容超过这个之后就缩小字体显示,只能能将字体都显示完全;也就是动态更改的的TextView的字体大小,当TextView的的的内容比较多时缩小显示,当TextView的中的内容比较少时正常显示 目录 图片展示 方法一:重写的TextView 方法二:使用框架An
项勇
2018/06/19
1.7K0
pyDatalog: python的逻辑编程引擎(用于推理、查询等)【一:序言】
在探索"知识推理"的时候找到了pyDatalog这个工具。它借鉴了Datalog这种声明式语言,可以很方便自然地表达一些逻辑命题和数学公式,并且它是在我现在最爱的python上实现的。尝试以后,其简洁优雅的形式一下子把我吸引住了。来看一个官网上用它实现阶乘的例子:
blmoistawinde
2019/10/30
2.1K0

相似问题

BlackBerry编程-设置标签的字体大小

11

Android编程按钮字体大小(像素)

22

以编程方式增加NSAlert的字体大小

227

以编程方式设置UITextView字体大小

11

用于填充动态div的字体大小

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文