سؤال

أنا جديد على كيو تي. لقد قمت بتثبيت QT لـ VS2008 ودمجت مع بلدي VS2010. أريد فقط أن أعرف كيفية تقديم طلبات HTTP. لقد قرأت عن qtnetwork لكن QTHTTP هو OSSELETE.

أنا أعرف أيضا عن libcurl و Curlpp, ، لكن لدي مشاكل في تثبيتها ، وجعلها تعمل مع QT.

بماذا توصي، qtnetwork أو Curlpp؟ لو qtnetwork, ، هل يمكنك إعطائي عينة وظيفة أو قطعة من التعليمات البرمجية (وما فئة الاستخدام). لو Curlpp (libcurl), ، هل يمكنك توجيهني إلى مكان ما يمكنني فيه العثور على الخطوات اللازمة لتثبيتها كيو تي (أو يرجى شرح)؟

شكراً جزيلاً.

هل كانت مفيدة؟

المحلول

libcurl و Curlpp هي مكتبات رائعة ، لكن استخدامها يضيف اعتمادًا على مشروعك ربما يمكنك تجنبه.

توصي الإصدارات الحديثة من QT بالاستخدام QNetworkAccessManager لتقديم طلبات الشبكة (تضمنت طلبات HTTP) وتلقي الردود.

أبسط طريقة ممكنة لتنزيل ملف هي:

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
manager->get(QNetworkRequest(QUrl("http://stackoverflow.com")));

عندما replyFinished الفتحة تسمى ، QNetworkReply الكائن الذي يأخذه كمعلمة سيحتوي على البيانات التي تم تنزيلها وكذلك بيانات التعريف (الرؤوس ، إلخ).

يمكن العثور على مثال أكثر اكتمالا في أمثلة QT ، يمكنك اقرأ هنا رمز المصدر الخاص به.

نصائح أخرى

Giuseppe على حق ، لا تحتاج إلى استخدامها libcurl, Curlpp ومكتبات مماثلة. ليست هناك حاجة لذلك ، QT لديه طبقة عمل بسيطة وعمل.

ضع في اعتبارك أن الطريقة القياسية لإرسال الطلب واسترداد الرد غير متزامن. يجب عليك دائمًا توصيل إشارة المدير (QNetWorkReply*) إلى فتحة.

إذا قمت بإرسال طلبات متعددة ولم ترغب في إضافة فتحة لكل رد ، فيمكنك دائمًا تشغيل حلقة حدث ، وتوصيل إشارة المديرين إلى فتحة Quit ().

شيء من هذا القبيل:

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
QEventLoop *eventLoop = new QEventLoop();
QObject::connect(manager, SIGNAL(finished(QNetworkReply*)), eventLoop, SLOT(quit());

manager->get(QNetworkRequest(QUrl("http://stackoverflow.com")));
eventLoop->exec(QEventLoop::ExcludeUserInputEvents);

QByteArray replyData = reply->readAll();
... //do what you want with the data your receive from reply

بالمناسبة. لا أعرف ماذا تفعل. ولكن إذا كان تطبيقًا للجوال ، فإنني أوصيك بالتبديل من VS إلى QTCreator IDE. إنه يحتوي على محاكاة لطيفة ومجموعة أدوات كاملة لاختبار الأجهزة المحمولة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top