QT'de Tek Fonksiyon İçinde HTTP veya HTTPS Request-Response - Yiğit Yüce
C/C++, Nasıl Yapılır?
Normalde QT’de bir linke HTTP request(istek) yapmanın en çok kullanılan şekli signal-slot yapısı ile yapılandır. Ancak bu ekstradan fazladan bir fonksiyon gerektirir ve sorguya verilen cevabı o fonksiyonda işleme zorunluluğu gibi kısıtlamalar getirir.
Bu yüzden bu yazıda C tipi arka arkaya işleyen kodlar ile tek bir fonksiyon içinde senkron bir HTTP request ve response işlemlerinin yapılmasından bahsedilecektir. Bu yöntem, QT’nin belki de en güzel özelliklerinden biri olan signal-slot yapısını ağlatır cinsten bir yöntem olacak ancak bazen senkron olmak yani cevabı beklemek gerekmektedir.
Bu tarz bir fonksiyonun temelini QEventLoop sınıfı oluşturmaktadır. QEventLoop sınıfında çalışacak döngünün bitme koşulu, network işlemi başlamadan önce, connect() fonksiyonu sayesinde bir sinyalin (signal) tetiklenmesine bağlanır. Bu sayede belirlenen sinyal geldiğinde döngü sonlandırılır. Birbiri ile ilişkilendirme işlemi tamamlandıktan sonra http/https isteği yapılır ve QEventLoop sınıfındaki döngü çalıştırılmaya başlanır ve döngü bitme sinyali gerçekleşene kadar döngünün çalışması devam eder. Döngü sona erdikten sonra http/https cevabı okunur.
QString R_Selection_Facebook::doHttpRequest(QString link)
QNetworkAccessManager *networkMgr = new QNetworkAccessManager(this);
request.setSslConfiguration( QSslConfiguration::defaultConfiguration() );
request.setUrl( QUrl(link) );
QNetworkReply *reply = networkMgr->get( request );
// Event dongusunu calistir. Bu komut finished() sinyali tetiklenene kadar
// kendi icinde donecek ve bu sinyal geldiginde donguden cikacak.
Https sorgusu yapabilmek için bazı ek ayarlamalar gerekmektedir. Bu ek ayarlamalar 39 ve 44. satırlarda yapılmıştır. Eğer https ile işiniz yoksa bu satırları silebilirsiniz. Kodun QtCreator’den alınmış ekran görüntüsü ise aşağıdaki gibidir.
Eclipse’de Arm İçin Cross Compile Ayarlarının Yapılması
C++ Thread Sınıfı Kullanan Kodların Eclipse’de Derlenmesi
Gayet mantıklı, teşekkürler
RT @mmkubilay: 1.AKP’nin sıklıkla kullandığı bir slogan var: Ekonomi emin ellerde! Peki öyleyse günden güne çatırdayan ekonomideki gidişatt…