如何在 c++/qt 中使用 curl cmd

How to use curl cmd in c++/qt

提问人:Jabu 提问时间:9/3/2023 更新时间:9/3/2023 访问量:91

问:

为什么我通过以下错误返回:outputprocess

curl: (6) Could not resolve host: application
curl: (3) URL using bad/illegal format or missing URL

当我按下并键入时,相同的代码可以正常工作win+r

cmd.exe /k curl -H "Accept: application/vnd.github.v3.raw" -L "https://api.github.com/repos/jajabu33/test/branches"
QString Debugger::process(const QString& program, const QStringList& arguments)
{
    QProcess process;
    QByteArray output;
    QObject::connect(&process, &QProcess::readyReadStandardOutput, [&]
    {
         output += process.readAllStandardOutput();
    });

    process.setProcessChannelMode(QProcess::MergedChannels);
    process.start(program, arguments);

    QEventLoop eventLoop;
    QObject::connect(&process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), &eventLoop, [&] { eventLoop.quit(); });
    eventLoop.exec();
    return output;
}


QString output = process("cmd.exe", {"/c curl -H \"Accept: application/vnd.github.v3.raw\" -L \"https://github.com/jajabu33/test/branches\""});
C++ QT 卷曲 CMD

评论

0赞 PaulMcKenzie 9/3/2023
我不使用 Qt,但我在命令行上看到 6 个参数,而您的代码只创建了一个大参数。你确定那会起作用吗?
0赞 Jabu 9/3/2023
@PaulMcKenzie意思是将每个“字符串”拆分为一个参数? 这也不起作用,同样的错误。QString output = process("cmd.exe", {"/c", "curl", "-H", "Accept: application/vnd.github.v3.raw", "-L", "https://github.com/jajabu33/test/branches"});
0赞 PaulMcKenzie 9/3/2023
我认为您需要将其分解为 6 个参数。同样,我不使用Qt,但这是命令行和代码之间的明显区别。
1赞 Alan Birtles 9/3/2023
你为什么要运行这个?为什么不直接运行 curlcmd
1赞 Jesper Juhl 9/3/2023
为什么不使用而不是通过命令行程序呢?libcurl

答: 暂无答案