首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >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

复制
相关文章
不再使用人眼评估,你训练的GAN还OK吗?
生成对抗网络(GAN)[19] 是由一对存在竞争关系的神经网络——生成器和判别器——组成的深度神经网络架构。通过交替优化两个目标函数训练该模型,这样可以让生成器 G 学会产生与真实图像类似的样本,还能让判别器 D 学会更好地甄别真假数据。这种范式潜力巨大,因为它可以学会生成任何数据分布。这种模型已经在一些计算机视觉问题上取得了一定成果,例如文本到图像的转换 [56] 和图像到图像的转换 [24,59]、超分辨率 [31] 以及逼真的自然图像生成 [25]。
机器之心
2018/09/20
8970
不再使用人眼评估,你训练的GAN还OK吗?
Are you ok? 雷军真的很Ok
1969 年,雷军出生在湖北仙桃一个教师家庭。雷军的父亲是典型的知识分子,从师范大学毕业后一直在县城教书。雷军的母亲有着那个年代的朴实和勤劳。这种家庭环境培养了雷军耿直、憨厚的性格,父母的谆谆教诲和身体力行的熏陶,促使他谦虚好学,从小就充满了对知识的渴望。
张叔叔讲互联网
2019/01/09
1.1K0
8500万人找工作不再“摸黑”
“你看得到吗?能听见吗?可以说话吗?” 如果应聘时有HR提出这些要求,你是不是感觉到奇怪。但是,对大多数人而言毫不费力的“职位要求”,却是残障群体跨不过去的山。 所有工作,都有“隐形门槛”,你感知不到,因为你被天生赐予了。毕业于深圳大学,技术水平足够优秀的冯桂杰,就因为听力障碍在找工作时屡屡碰壁。 而在当时,能接纳冯桂杰仅有一家服务盲人群体的公司。现在,已经成为一名前端工程师冯桂杰正和同事合作开发一个面向视障群体的求职交友社区平台,希望帮助8500万残障人士都能找到工作。 它叫“蚕舍”。 “蚕舍”,取自
腾讯云开发TCB
2022/11/18
5600
8500万人找工作不再“摸黑”
ok判别式
这样的编译器简化后的判断代码(实际应该是一种语法糖),在Go中非常常用. 一般称为称 "ok判别式"。当然这个变量的名称可以随意取,不一定是"ok"
fliter
2023/06/18
1610
ok判别式
Cisco Calisti DEMO OK.
思科自己其实也运营者几朵云,好像都不大。例如 Webex, Merkai, Umbrella, thousandeyes,AppDynamics Cloud 等等。
taoza
2023/04/03
6110
linux工作命令总结
查看tomcat进程pid ps -ef|grep tomcat 统计该tomcat进程内的线程个数 ps -Lf 29295|wc -l 检查本机各端口的连接情况(tcp,udp等) netstat -anlp | grep 8003 取文件最后一列求平均值 awk '{a+=$NF;b++}END{print a,a/b}' access_log.2021-12-28.log awk '{max=$NF;b++}END{print}' 打印大于1000ms的记录 cat a
Vincent-yuan
2022/05/06
8600
linux grep工作常用
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/details/77752818
bear_fish
2018/09/14
5.8K0
linux grep工作常用
掌握这五点建议,Linux学习不再难
学习 不能着急,要按照一定的方法和建议慢慢来 , 每个人 都有一套适合自己的方法,Linux的概念,版本,命令,功能,软件,用途,等等这些都是很好的切入点, 学习Linux分为几个层次,个人觉得 庖丁解牛差不多 。 学习Linux 就是把它的知识点、难点全部罗列出来,一个一个的由浅入深的分析,学习,掌握。
PHP开发工程师
2022/06/23
3920
掌握这五点建议,Linux学习不再难
borrow用法及短语(that is ok用法)
大家好,又见面了,我是你们的朋友全栈君。 public class MainActivity extends AppCompatActivity { String path="https://www.zhaoapi.cn/ad/getAd"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setCon
全栈程序员站长
2022/07/25
3.2K0
FPGA卡拉ok系统--Biquad filter
本文翻译自:http://www.earlevel.com/main/2003/02/28/biquads/
FPGA开源工作室
2020/11/03
1.9K0
FPGA卡拉ok系统--Biquad filter
Linux技能不再是第一需求?Linux基金会发布2021开源工作报告:云容器市场需求最高
最近,Linux 基金会和在线课程平台 edX 共同发布了一份 2021 开源工作报告,远程工作成为主流,人才短缺情况日益加剧,这份报告强调了雇主和技术人员对云技术的兴趣激增,这也使得Linux 近年来首次作为非第一需求技能,让出了头把交椅。
新智元
2021/10/12
5390
WPF使用DialogResult.OK报错
大家好,又见面了,我是你们的朋友全栈君。 WPF里直接用 if (pOpenFileDialog.ShowDialog() == DialogResult.OK) {} 会报:
全栈程序员站长
2022/06/25
6860
OK(温健):OneKeyTools Lite 发布
2017年5月2日,OneKeyTools 8发布。经过一年的时间,收集了OK用户的一些意见,也发现了一些小bug,还有自己也需要一些新的功能来更好的辅助PPT设计,所以感觉还是有必要更新一下,但一直没有下定决心
寒树Office与RPA
2019/11/28
1.5K0
$_POST
上半年为了应付面试,背了很多基础知识,其中有个经常会被问到的,就是php中的超全局变量。一直以来也只是把这几个超全局变量给记下来了,但是往深点就没了。仔细一想,好像对它一无所知。
仇诺伊
2020/04/24
4K0
$_POST
Linux工作目录切换命令
1.pwd pwd命令用于显示用户当前所处的工作目录 格式:pwd[选项] [root@linuxprobe Desktop]# pwd /home/linuxprobe/Desktop 2.cd 用于切换工作路径 格式:cd[目录名称] cd- 命令返回到上一级所处的目录 cd.. 进入上一级目录 cd~ 命令切换到当前用户的家目录 [root@linuxprobe Desktop]# cd /etc [root@linuxprobe etc]# cd /bin [root@linuxprobe bin
心跳包
2020/08/28
7.6K0
Linux常用工作命令
1.echo 格式:echo [字符串|$变量] 例如: [root@linuxprobe Desktop]# echo my name is xintiaobao my name is xintiaobao [root@linuxprobe Desktop]# echo $SHELL /bin/bash 2.date 格式:[选项][+指定的格式] [root@linuxprobe Desktop]# date Fri May 25 19:54:42 WST 2018 [root@linuxprobe
心跳包
2020/08/28
4680
平时工作常用Linux指令
Linux常用指令: cat file 查看文件 vim file esc : wq! 编辑文件 退出 du -h -d1 查看一级目录空间占用 tail -f file 监视文件增长 touch file 创建文件 mkdir dic 创建文件夹 tar cvf 1.txt 1.tar tar压缩文件 tar czvf sinclude.tar sinclude 压缩目录 mv 源文件/文件夹 目标文件/文件夹全路径 移动文件 cp sourcefile targetfile 复制文件 sz
kiki.
2022/10/25
6810
Linux 下curl命令下Http 的get or post请求
curl “http://www.baidu.com” 如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地
全栈程序员站长
2022/06/30
2K0
Linux命令(面试+工作版)
Linux命令(面试+工作版) 1. tar 创建一个新的tar文件 解压tar文件 查看tar文件 2. grep 在文件中查找字符串(不区分大小写) 输出成功匹配的行,以及该行之后的三行 在一个文
Java帮帮
2018/03/15
3.2K0
Linux命令(面试+工作版)
OK(温健):PPT渐变高级教程
2019年的第一篇开局教程考虑了很久,最终我定下本篇教程,介绍PPT中渐变的高(细)级(节)运用。本篇教程步骤虽然较多,但都是很基础的功能,适合新人练手。本教程无需插件,PowerPoint 2007版以上或WPS应该都可以操作
寒树Office与RPA
2019/11/28
6490

相似问题

Pixlr,POST不再工作了

10

Volley JsonObjectRequest Post参数不再工作

157

Java JSP下载xls文件- POST OK,不工作

14

AJAX Post在使用DataTables时不再工作

25

linux curl POST请求不工作

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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