Untuk pengunduh yang dijalankan melalui QProcess, bangun lingkungan anak sebelum memulainya:

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/"});

Fragmen Qt ini mengasumsikan objek induk yang sudah ada, loop peristiwa, dan curl yang tersedia bagi anak. Jaga QProcess tetap hidup selama berjalan, dan tangani sinyal selesai serta galatnya di aplikasi. Untuk pemeriksaan situs publik ini tanpa kredensial proksi yang dikonfigurasi, daftar proxy HTTP menawarkan titik akhir HTTP kandidat untuk nilai proksi anak.

Memulai dengan systemEnvironment mempertahankan nilai warisan seperti PATH. Membangun lingkungan yang kosong lalu menambahkan satu variabel proksi akan menghilangkan entri lain itu.

Nama variabel adalah kuncinya. export adalah perintah shell, bukan bagian dari kunci itu dan bukan berkas yang dapat dieksekusi yang harus dijalankan QProcess lebih dulu. Meneruskan lingkungan secara langsung juga menghindari pembuatan perintah shell di sekitar URL.

setProcessEnvironment berlaku untuk proses yang dimulai sesudahnya. Perintah ini tidak mengubah lingkungan anak yang sudah berjalan atau shell yang menjalankan aplikasi Qt.

Pengunduh yang dipilih harus memahami variabel tersebut. Contoh ini memakai https_proxy huruf kecil untuk permintaan HTTPS curl dan mempertahankan masukan pintas warisan. Program anak lain dapat memiliki antarmuka proksi lain.

Artikel terkait