Для загрузчыка, запушчанага праз QProcess, пабудуйце асяроддзе дачэрняга працэсу перад запускам:

auto* download = new QProcess(parent);
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.insert("https_proxy", "http://proxy.example:8080");
download->setProcessEnvironment(env);
download->start("curl", {"--head", "https://www.example.com/"});

Гэты фрагмент Qt мяркуе наяўнасць бацькоўскага аб'екта, цыклу падзей і curl, даступнага дачэрняму працэсу. Трымайце QProcess жывым, пакуль ён працуе, і апрацоўвайце яго сігналы завяршэння і памылак у праграме. Для гэтай праверкі публічнага сайта без наладжаных уліковых даных проксі спіс HTTP-проксі прапануе кандыдатаў HTTP-канцавых пунктаў для значэння проксі дачэрняга працэсу.

Пачатак з systemEnvironment захоўвае ўспадкаваныя значэнні, такія як PATH. Пабудова пустога асяроддзя і даданне адной зменнай проксі азначала б страту гэтых іншых запісаў.

Імя зменнай — гэта ключ. export — каманда абалонкі, не частка гэтага ключа і не выканальны файл, які QProcess павінен спачатку запусціць. Перадача асяроддзя напрамую таксама пазбягае пабудовы каманды абалонкі вакол URL.

setProcessEnvironment дзейнічае на працэс, запушчаны пасля гэтага. Ён не змяняе асяроддзе ўжо працуючага дачэрняга працэсу або абалонкі, якая запусціла праграму Qt.

Выбраны загрузчык павінен разумець гэтую зменную. Гэты прыклад выкарыстоўвае https_proxy ў ніжнім рэгістры для HTTPS-запыту curl і захоўвае ўспадкаваныя ўваходныя даныя абыходу. Іншая дачэрняя праграма можа мець іншы інтэрфейс проксі.

Падобныя артыкулы